安全なウェブサイトの作り方 改定第3版
IPAによる「安全なウェブサイトの作り方」の改定第3版が出ていました。あちこちにUTF-7によるXSSネタが出てきているんですが、いくつか気になる点がありました。
まずはP.25から。
HTTP のレスポンスヘッダのContent-Type フィールドには、「Content-Type:text/html; charset=us-ascii」のように、文字コード(charset)を指定することができますが、この指定を省略した場合…
安全なウェブサイトの作り方 改定第3版 (P.25)より。
charset をきちんとつけようという例で US-ASCII を示すのはあまり頂けないなと思います。Internet Explorer においては、US-ASCIIの場合は最上位ビットを無視するという問題が2006年から放置されてますので、US-ASCIIを指定してもそれはそれでWebアプリケーション開発者の意図しない問題が発生しそうです。つぎにP.26。
安全なウェブサイトの作り方 改定第3版 (P.26)より。
それぞれ「Shift-JIS」「EUC_JP」ではなく「Shift_JIS」「EUC-JP」です。「Shift-JIS」はIEでもなんとなく認識できてるっぽいですけど、「EUC_JP」はIEでは認識できないcharset名ですので、
Content-Type: text/html; charset=EUC_JP
みたいな指定をしてしまうと、UTF-7と認識されてXSSする可能性もありますので、きちんと「EUC-JP」と書かないといけません。
「きちんと charset をつけよう」という主旨の説明の箇所なので、それこそきちんと書いて欲しかったです。
(2008/03/11追記: 本日付けで上記は訂正されたようです。伊藤さん、情報ありがとうございました。)