Quote:
とにかく、JavaScriptで最も怖いのは、"XMLHttpRequest"なので、この文字列と、動的にXMLHttpRequestという関数名を生成・実行する"eval"の2つを検出することは最低限必要でしょう。
うーん。外部JavaScriptライブラリをincludeしている場合、潰す箇所がべらぼうに増えますね・・・。
安易にprototype.jsなんかをincludeしてしまうと、このフィルタリングが非常に難しい・・・。たとえば、Ajaxは new Ajax.Request で生成されてしまう・・・。
外部ライブラリ自体の脆弱性ではないけど、それが引き起こす脆弱性が増えそうですね。
便利さと完全にトレードオフです。困ったものです・・。
実際、CSRF対策は
・とりあえずチケット
・後は何とかどっかで引っかかってくれ
という状況で。
Quote:
安易にprototype.jsなんかをincludeしてしまうと、このフィルタリングが非常に難しい・・・。たとえば、Ajaxは new Ajax.Request で生成されてしまう・・・。
外部ライブラリ自体の脆弱性ではないけど、それが引き起こす脆弱性が増えそうですね。
あ〜、なるほど〜。そりゃ潰しようがないですね。
やっぱり、Script Insertionについては、本体側で真面目に作ってもらうしかないですね。
やはり外部からの「HTML許可」はあり得ない設定ですね。
承認制でも事実上意味のないケースが多く見られますし。
Quote:
便利さと完全にトレードオフです。困ったものです・・。
実際、CSRF対策は
・とりあえずチケット
・後は何とかどっかで引っかかってくれ
という状況で。
これ、Mozzilaとかのブラウザプロジェクトにみんなでお願いしましょうよ。
XMLHttpRequest の場合には、それがWebアプリケーション側で確実に判別できるHTTPリクエストを送る(しかもJavaScriptからはキャンセルできない)、という仕様を追加してもらうしかないですよ。
Quote:
やはり外部からの「HTML許可」はあり得ない設定ですね。
そうなんですよね。HTMLタグありのプレビュー機能がいかに難しいか・・・。今のところ、私は自分が納得できる範囲での解決方法が見つけられてないです。
Quote:
承認制でも事実上意味のないケースが多く見られますし。
管理者にCSRF攻撃を仕掛けられるだけですからね。
Quote:
Quote:やはり外部からの「HTML許可」はあり得ない設定ですね。
そうなんですよね。HTMLタグありのプレビュー機能がいかに難しいか・・・。今のところ、私は自分が納得できる範囲での解決方法が見つけられてないです。
「HTMLタグありのプレビュー」は、XSSの方ですね。
これだと、BigUmbrellaも効かないですし。
ただ、記事にも書きましたが、このHTMLプレビュー以外はすべてBigUmbrellaでXSSを封じ込める事ができるので、あとは、HTMLプレビューにチケットなりリファラーチェックなりを埋め込めばOKじゃないかと踏んでます。
Quote:
Quote:承認制でも事実上意味のないケースが多く見られますし。
管理者にCSRF攻撃を仕掛けられるだけですからね。
私が書いたのは、承認制のチェックにおいて、ScriptInsertionが成立しているものが多い、という意味だったのですが、tohokuaikiさんのおっしゃる通り、承認行為そのものを、別途XSS+CSRFで強制する、なんて手はありますね。
ただ後者は、BigUmbrellaで防げるとは思いますが、ずっとベターな対策として、管理者承認にcapchaを導入するしか!