構文木を作成する
(HTML許可/根本的解決)• 複雑な処理であり、十分な検討が必要。
html head
title meta
link
body table
thead tbody
p a font
script
入力値チェック
(HTML許可/保険的対策)• スクリプトを無害な文字列に置換する
–
「<script>
」→
「<xscript>
」–
「javascript:
」→
「xjavascript:
」• 完全な対策は困難
–
「java	script:
」–
「java
(改行コード)script:
」文字コード指定を行う
(共通/根本的解決)
• ウェブブラウザが、ウェブサイトの意図と反す る文字コード解釈をする場合があり、ウェブ サイト側での対策の効果がなくなる。
• Content-Type: ヘッダでの指定
– Content-Type: text/html; charset=euc-jp
• meta タグでの指定方法
– <meta http-equiv="Content-Type"
content="text/html; charset=euc-jp">
包括的なクロスサイト・スクリプティング対策
• ウェブサイト全体に対策を行き届かせたい、
でもどうすれば?
–
テンプレートエンジンを利用する方法がある。–
例: Struts(Java), Smarty(PHP), Ruby on Rails
• テンプレートエンジンの内容を、よく把握して 使う必要がある。
• 漏れが起きる可能性を少なくする設計ができ
る。
まとめ:クロスサイト・スクリプティング
•
ウェブページを出力する際の配慮を怠ると、クロス サイト・スクリプティングの脆弱性が生じる。•
全ての個所に対して、対策を施す必要がある。•
詳しくは「安全なウェブサイトの作り方」を参照。安全なウェブサイトの作り方 改訂第
3
版http://www.ipa.go.jp/security/vuln/websecurity.html
安全なウェブ開発のための資料
他の脆弱性への対策も重要
• クロスサイト・スクリプティングや OS コマン ドインジェクションに代表される脆弱性
• SQL インジェクションと同様に、設計時から の対策で防げるものが多い
• 実施する対策の効果や性質を正しく理解する
• 安全なプログラミング知識を身に付ける
安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/websecurity.html
• IPA に届出られた脆弱性関連 情報をもとに、対策をまとめた もの
• 脆弱性ごとに解説と「根本的 解決」「保健的対策」を記載
• 「失敗例」について記載
• ウェブセキュリティの実装状況 のチェックリストつき
書籍 ウェブ
セキュア・プログラミング講座(新版)
http://www.ipa.go.jp/security/awareness/vendor/programmingv2/
• 安全なプログラムについて 要求定義や設計段階からの 対策について記載
– WEB
アプリケーション編– C/C++
言語編ウェブ
■まとめ:ウェブアプリケーションの
安全性向上のためのポイント
• 実施する対策の効果や性質を正しく理解する
• 安全なプログラミング知識を身に付ける
参考サイト:
安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/websecurity.html
セキュア・プログラミング講座(新版)
http://www.ipa.go.jp/security/awareness/vendor/programmingv2/index.html
知っていますか?脆弱性