0
$text = "(= \" ' & \\ </textarea> : ; . " ;
echo htmlentities($text);
//outputs as -->> (= " ' & \ </textarea> : ; .
//obviously, htmlentities does nothing to () = ; and .
htmlentitiesは優れた防衛線ですが、JavaScriptのコンテキストでは役に立ちません。XSSとhtmlentities
さらに、強制的に()を使用する独自のhtmlencode関数を記述することはできません。 ;と=エンコーされる文字も同様ですか?
このように、1つの機能を使用すると、全体を安全にすることができます。私はそのアプローチに問題があるかどうか聞いてみたい。
次の4文字のいずれかを使用せずにあなたに危害を加える可能性のあるjavascriptは、(。); =。
ユーザが生成したコンテンツを「
あなたは、コンテキストに基づいて異なるエンコーディングを必要とします。すべてを一度に処理できる「普遍的な」エンコーダはありません。それは、彼らがで解釈している状況だが、危険な文字ではありません。JavaScriptで
値は(
addslashes()
のような他の機能はすべてのエッジケースを処理しません。HTML<script>
で要求されるようjson_encode
が</
をエスケープ)json_encode($value)
が必要です。HTML属性のJavaScriptの値は、両方ともが必要です:
htmlspecialchars(json_encode($value))
、構文の各「レイヤー」はデータを解釈するときに独自のデコードを行うためです。出典
2012-03-26 20:59:51 Kornel