ネットワークを通じた攻撃手法の一つで、保安上の弱点(脆弱性)のあるWebサイトを踏み台に、悪意のあるプログラムを そのサイトの訪問者に送り込む手法。また、そのような攻撃に利用される脆弱性のこと(XSS脆弱性)
これだけだと自分が入力したスクリプトを自分が実行するだけであるので何の問題もないだろう。しかし他人が作成した スクリプトを実行させられるとしたら脅威となることが分かっていただけるだろう
ウェブページに出力する全ての要素に対して、エスケープ処理を施す。 URL を出力するときは、「http://」や 「https://」で始まる URL のみを許可する。 <script>...</script> 要素の内容を動的に生成しない。 スタイルシートを任意のサイトから取り込めるようにしない。 HTTP レスポンスヘッダの Content-Type フィールドに文字コード(charset)を 指定する。
1. テキストノードに出力する際の「<」「>」のエスケープ漏れ 2. 属性値に出力する際の「"」「'」のエスケープ漏れ 3. URLをリンクとして取り扱う際のプロトコルスキームの確認漏れ 攻撃者が与えたURLによってリンクを生成する場合にjavascript:スキームなどを許容していると、エスケープ漏れの場合と同様に XSSが発生することになってしまいます。 3.については、URLをリンクとして出力する際にはスキームがhttpあるいはhttpsであること、すなわちURLが「http://」または 「https://」で始まることを確認するようにします。
IPAが届出(*1)を受けた脆弱性関連情報を基に、届出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を取り上げ、ウェブサイト 開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料です
「location」プロパティを使うと、現在開いているWebページのURLを取得したり、別のURLを代入して画面遷移させるようなことが可能になります。
サーバ上でのHTMLの生成時には問題はなく,ブラウザ上で動作するJavaScript上のコードに問題があるために発生します。
実は<script></script>で実行するほかにもjavascriptを実行させる方法があります。下の書き方でもjavascriptが動きます。 <a href="javascript: alert('へぇ~!');">へぇ~ボタン</a>
PHPの場合の例 header('X-XSS-Protection: 0');