20

以下の記述が正しい場合、

  • すべてのドキュメントは HTTP ヘッダーとともに提供されますContent-Type: text/html; charset=UTF-8
  • すべての HTML 属性は、一重引用符または二重引用符で囲みます。
  • <script>ドキュメントにタグはありません。

Web サーバーで HTML を生成するときに、( 、、、、を対応する名前付き HTML エンティティにhtmlspecialchars($input, ENT_QUOTES, 'UTF-8')変換する) だけではクロスサイト スクリプティングから保護できない場合はありますか?&"'<>

4

3 に答える 3

2

古いPHPバージョン(5.2程度)を使用していないと仮定すると、htmlspecialcharsは「安全」です(もちろん、@Royal Bgが言及しているようにバックエンドコードを考慮に入れています)

古い PHP バージョンでは、不正な UTF-8 文字がこの関数を脆弱にしていました

私の2セント:すべてをエスケープ/すべてをエンコードするのではなく、何が許可されているかを伝えることで、常に入力をサニタイズ/チェックしてください

つまり、誰かが電話番号を入力する必要がある場合、0123456789()+- の文字が許可されていると想像できます。とスペースですが、他のすべては単に無視/削除されます

アドレスなどにも同じことが当てはまります。アドレスのドット/ブロック/ハートなどにUTF-8文字を指定している人は、精神的に病んでいるに違いありません...

于 2013-10-25T09:17:23.697 に答える