書く内容の方針とかはフラフラしているのです。あまり考えていないかも知れません。面白いなぁと思うこと、大事なことだなぁと思うことを書いています。あんまり悲しいことは書かない主義。
http://d.hatena.ne.jp/hasegawayosuke/20071022/p1
について感想を。すげぇぇぇ。
alert(1)の代わりにalert(document.charset)とならどうだろとか思ってスクラッチでいろいろ作ってみました。
んで、わかったのですが、条件によっては1個のalert()なのに、2回もアラートしやがるですよ。最初はutf-7,次はShift_JISとかいう具合に。
つまぁり。title要素の中でUTF-7ぽいので一旦はalert("utf-7")とかするくせに、meta要素でcharsetを指定されてみると、「あ、いかんいかん、こりゃShift_JISだったのねん、最初からやりなおすから勘弁してチョ」というのがIEの気持ちなのねん。・・・もうね。
調子にのって、「美乳」とかいう文字をEUC-JP表現でシコタマ(←ここがかんじん)title要素において、そのあとalert(document.charset)してみましたよ。あ、後続するmeta要素ではShift_JISなのねん。
そしたら、euc-jp とか最初alertして、次にShift_JISだったのねんとalertしやがりました。
無論、もう少しゴニョゴニョしたのは言うまでもありません。onload時点と比べたりとか。
結論。やっぱHTMLの文法なりサーバ側でのきちんとした処理とかを意識したウェブアプリは自動的にXSSに対して耐性があるってことなのね。
それと、対応策の別解としてtitle要素の中身を、1バイト文字や2バイト文字にこだわらずに全て文字参照しておいたら、とか思ったけれどこのケースに限って言えばバッドノウハウだなぁ。
っていうか、Shift_JISの場合の5C問題の視点で課題Aをみつめればミドルウェアでなんとかしてくださいよというのは困難かもしれません。(<をエスケープしない場合XSS穴が簡単に作れるから)どんだけ優秀な人工知能をつむんだろうって気が←ミドルェア