💊

XSSはサニタイジングで無効化

2021/08/23に公開

XSSとは

HTMLの中に悪意のあるJavaScriptの構文を入れることで不正な動作を引き起こさせる攻撃手法です。JavaScriptの構文を使っているので、ブラウザで実行させることができます。
フォームに入力した値をそのまま出力している場合、狙われやすいので対策が必要です。

何も対策をしなかった場合、たとえば入力欄に下記スクリプトを入れると、開発者が意図しないスクリプトが実行されてしまいます。

<script>alert("This is XSS")</script>

対策

サニタイジングと呼ばれる処理をして「'」といった特殊な文字をJSの構文ではなく、普通の文字として認識するように無効化します。
phpではhtmlspecialchars()という関数がある[1]ので、積極的に利用しましょう。

echo htmlspecialchars("'", ENT_QUOTES, 'UTF-8');
// 実行結果: &#039;

また、サニタイジングを行ったときに意図しない動作を起こさせないためにも
入力チェックをして、不正な文字を入力されないようにしてから
出力するときにサニタイジングを行いましょう。

参考

https://www.amazon.co.jp/「プロになるためのWeb技術入門」-――なぜ、あなたはWebシステムを開発できないのか-小森-裕介/dp/4774142352

脚注
  1. JavaScriptでは、サニタイジングする関数がないので自作する必要があります。 ↩︎

GitHubで編集を提案

Discussion