質問: PHPで作成されたページで、XSS対策としてhtmlspecialcharsによるエスケープ処理はおこなったのですが、脆弱性チェックのソフトにかけたところ、それだけだとjavascript:alert()のようなケースに対応できてないようで、少し悩んでいます。 例えばチェックの結果、以下のような部分で警告が出てきます。 みなさまはどのように処理をされているのでしょうか? ひとつひとつのパラメータに対して正規表現などで細かくチェックをしていくしかないでしょうか。 何か定番的な解決方法があるのであればご教示いただければと思っております。 よろしくお願いいたします。
回答: **すでにクローズされてますが参考まで** エスケープ処理って、本質的には「あるシステム系から別のシステム系にデータを渡す際に、渡す先で正しく理解できるデータとして渡す」ことを目的にしています。 ですので、脆弱性の有無というより、正しく動作させるために必要な処理なので、ひとつひとつ正しく渡せる方法を選択する必要があります。 今回だと「php」というシステムから「ブラウザ」へ「html(url)」を正しく渡すことが本質なので、url として正しく理解されるために`urlencode()`を使用する。ということになります。 不正アクセス対策という観点だけでなく、本質からチェックするとアプリケーションとしても正しい動作を行うようになるので、ワリと重要な視点だと思います。 参考: エスケープの必要な処理とは?