#author("2020-12-28T01:55:37+00:00","default:yusami","yusami")
#author("2021-07-23T09:07:34+00:00","default:hotate","hotate")
#contents
&tag(セキュリティ,用語);
&tag(セキュリティ,攻撃);

* 情報 [#m44b405c]
- [[クロスサイトスクリプティング(XSS)とは - IT用語辞典>http://e-words.jp/w/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0.html]]
 ネットワークを通じた攻撃手法の一つで、保安上の弱点(脆弱性)のあるWebサイトを踏み台に、悪意のあるプログラムをそのサイトの訪問者に送り込む手法。また、そのような攻撃に利用される脆弱性のこと(XSS脆弱性)
- [[クロスサイトスクリプティング脆弱性とは?:クロスサイトスクリプティング対策の基本(前編) - @IT>http://www.atmarkit.co.jp/ait/articles/0211/09/news002.html]]
 これだけだと自分が入力したスクリプトを自分が実行するだけであるので何の問題もないだろう。しかし他人が作成したスクリプトを実行させられるとしたら脅威となることが分かっていただけるだろう

** 対策 [#w7226a79]
- [[安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構>https://www.ipa.go.jp/security/vuln/websecurity.html]]
 ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
 URL を出力するときは、「http://」や 「https://」で始まる URL のみを許可する。
 <script>...</script> 要素の内容を動的に生成しない。
 スタイルシートを任意のサイトから取り込めるようにしない。
 HTTP レスポンスヘッダの Content-Type フィールドに文字コード(charset)を 指定する。

- [[クロスサイトスクリプティング対策 ホンキのキホン - 葉っぱ日記>http://d.hatena.ne.jp/hasegawayosuke/20160106/p1]]
 1. テキストノードに出力する際の「<」「>」のエスケープ漏れ
 2. 属性値に出力する際の「"」「'」のエスケープ漏れ
 3. URLをリンクとして取り扱う際のプロトコルスキームの確認漏れ
 攻撃者が与えたURLによってリンクを生成する場合にjavascript:スキームなどを許容していると、エスケープ漏れの場合と同様にXSSが発生することになってしまいます。
 3.については、URLをリンクとして出力する際にはスキームがhttpあるいはhttpsであること、すなわちURLが「http://」または「https://」で始まることを確認するようにします。


** [[書籍]] [#rb511202]
- [[安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構>https://www.ipa.go.jp/security/vuln/websecurity.html]]
 IPAが届出(*1)を受けた脆弱性関連情報を基に、届出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を取り上げ、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料です

** JavaScript [#x86f3c03]
- [[HTMLの要素を取得する! JavaScriptのdocumentプロパティの使い方 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト>https://www.sejuku.net/blog/30970#URLlocation]]
 「location」プロパティを使うと、現在開いているWebページのURLを取得したり、別のURLを代入して画面遷移させるようなことが可能になります。


* 事例 [#s27d6689]
** DOM-based XSS [#l1da484a]
- [[第6回 DOM-based XSS その1:JavaScriptセキュリティの基礎知識|gihyo.jp … 技術評論社>https://gihyo.jp/dev/serial/01/javascript-security/0006]]
 サーバ上でのHTMLの生成時には問題はなく,ブラウザ上で動作するJavaScript上のコードに問題があるために発生します。


** href [#n5520733]
- [[htmlのhrefやsrcのクロスサイトスクリプティング(XSS)対策>http://blog.dododori.com/create/program/url-xss/]]
 実は<script></script>で実行するほかにもjavascriptを実行させる方法があります。下の書き方でもjavascriptが動きます。
 <a href="javascript: alert('へぇ~!');">へぇ~ボタン</a>


* 実験 [#y3ce507e]
** 設定 [#ce975de4]
- [[Chrome の「このページは動作していません」問題を回避する - ノウハウブログ - カンタローCGI>https://kantaro-cgi.com/blog/browser/disabled_chrome_err_blocked_by_xss_auditor.html]]
 PHPの場合の例
 header('X-XSS-Protection: 0');


* 関連 [#nd6221aa]
#related

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS