パスワードを忘れた? アカウント作成
664654 journal

securecatの日記: 常にサニタイズする癖を 5

日記 by securecat
レナ姫のWeb研究室を読んでいて、相変わらずというか読めば読むほどに勉強になるサイトだなぁとか思っていたわけですが、ふとソースを見ると、DOCTYPE宣言の次の行に、(閲覧者の)UserAgentの値をコメントの中に吐き出しているではないですか。

そこで気づいたことなんですが、UserAgentの値をサニタイズしてないんですね。つまり早い話が、「レナ姫のWeb研究所は、XSS脆弱性を伴っている」ということですが。

#もちろんサイトの性質上、およびUserAgentの値からという特性上、問題が発生するとは考え難いわけではありますが。

与えられた値を出力するときには、値のチェックやサニタイズはやって然るべきなわけで。CGIプログラムとかだったら、ちゃんとサニタイズしているんでしょうけども、UserAgentとかだとスッカリ忘れてしまっていたというか或いは思いもよらなかったという場合もありえますけど。まあこういうのは結局、癖つけないと駄目なんだと思います。

参考までに、たとえば以下のような値がUserAgentに入っていると、リソースやブラウザに依存しますが、ともあれ問題が起きるかもしれません。

  • --><html> : application/xmlのリソースの場合などは、XMLの文法的にエラります
  • -->入口 : UTF-8のリソースの場合などは、異なる文字コードが混在する可能性があります
  • --><html><head><title>I have an XSS</title></head><body> : タイトルが見た目上は書き換えられてしまうかもしれません
  • --><xmp> : ソースが丸見えになるかもしれません
  • --><link rel=stylesheet href=http://example.com/hoge.css> : hoge.cssの中に「@import url("javascript:alert('I have an XSS')");」などと書いてあるとXSS脆弱性をついたスクリプトが発動するかもしれません
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...