XSSとは(クロスサイトスクリプティングとは)
XSSとは?
外部からの入力をそのままHTMLとして出力してしまう脆弱性があることで、
以下のようなHTMLを挿入して攻撃ができる。
- <script src=”外部のjs”></script>
- <script>怪しい処理</script>
- ” onclick=”何かする
- “><iframe src=”外部のURL”></iframe>
このような攻撃のこと。またその攻撃ができる脆弱性のこと。
XSSで何ができる?
シンプルかつ最悪なのは、Cookie(セッションID)を取得されて、ログイン状態でシステムに入られること。システムにログインされたら後はやりたい放題。
(※この場合、セッションの実装、Cookieの設定がよろしくないといった別の問題はある。)
→ 情報漏洩、データの改ざん など
ほかにCookieが取れなくても、ログインしているユーザーにしかできない操作を勝手に実行されたり、内部でしか実行されない想定の処理が実行できたりする。
→ 注文される、決済される、あなたのパスワードが変更される など
単純に他のサイトに誘導されたり、何かダウンロードさせられるのもありうる。
フォームの入力値(個人情報、クレカ情報など)を外部に送信もできる。
結果として起きることは様々。
XSS対策
基本は画面表示時のエスケープ(エンティティ化、htmlspecialchars)。
ちゃんとやってあれば問題ない。
でもいろんな事情で漏れがあるのが現実のようです。
XSS対策(補助的なもの)
WAFの導入
WAFは XSSやSQLインジェクションなどの攻撃につながりそうなリクエストを止めてくれるもの。
設定次第。
WAFは保険的なもの、念のための防護壁になります。
CSP(コンテンツ・セキュリティ・ポリシー)の設定
これもできてしまった脆弱性を突かれにくくする保険的なもの。
プログラム側で0円でできるのはいいところ。
JavaScriptに制約ができるので設定内容はよく考えて。
XSS対策は
- まずはエスケープ(脆弱性を作らない)
- 補助的なものとしてCSP、WAF、Cookieの属性設定 などなど(脆弱性を突かれにくくする)
コメント