Webコンサルタントの愚痴とアジャイル,生産性向上,Trac,オープンソースなどの与太話
相も変わらず色々アプリを書いている。いまは仕事でPHPなんだが、以前お願いして協力会社に作ってもらったソースはXSSだらけ~(ただし認証配下かつF/Wでアクセス元限定)。
なので、これはアプリケーションファイヤーウォールでも入れないといかんな、と思いとりあえず自宅鯖でmod_securityの実験してみた。
これを入れると、要は入力パラメータ(正確にはクライアント側からapacheへ送信されるもの全て)を途中でチェックし、問題がある場合はロギングしたり、エラーとして以降の処理を止めたり出来る。
httpd.confまたは.htaccessまたはincludeファイルに予め以下のようなルールを記載しておく。
SecFilter "<[[:space:]]*script.*>”
SecFilter “<[[:space:]]*style.*>”
SecFilter “<[[:space:]]*link.*>”
SecFilter “<[[:space:]]*body[[:space:]]*>”
SecFilter “javascript:”
SecFilter “vbscript:”
SecFilter “about:”
SecFilter “expression(”
SecFilter “&{.*};”
SecFilter “onError”
SecFilter “onUnload”
SecFilter “onBlur”
SecFilter “onFocus”
SecFilter “onClick”
SecFilter “onMouseOver”
SecFilter “onMouseOut”
SecFilter “onSubmit”
SecFilter “onReset”
SecFilter “onChange”
SecFilter “onSelect”
SecFilter “onAbort”
SecFilter “document.cookie”
SecFilter “Microsoft.XMLHTTP”
色々な攻撃手法が次々と出てくるが、この定義ファイルに記載することでより安全には出来る。
性能上の問題はあるかもしれないが、性能とセキュリティどっち取りますか?って聞かれればセキュリティ取る俺なので問題なし。
ちなみに先日Yahooは何故PHPを採用しているのかを示す英語文書を読んだが、やはりアプリケーションファイヤーウォールを併用しているようだ。いくら気をつけてもアプリからXSSの脆弱性はなくならないしな。
よろしければ5段階評価で該当する☆をクリックしてください。
コメントはありません。是非コメントしてください。