XSSが勘違いされてる理由がわかった気がする
最近、未だにXSSが勘違いされててびっくりしたことがあったんだけど、なんで勘違いされてるのかわかった気がする。
どういう勘違いかというと、
JavaScriptではじけばいいんじゃね?
というもの。
まずはありきたりな説明から。
みたいなフォームがあって、次の画面に確認画面があるような、ありきたりなWebアプリケーション*1があったとする。
攻撃者は、まずこのフォームに
<s>test</s>
などと入れてみる。
なにも対策を施していないと、確認画面ではtestのように、取り消し線が表示されることになる。
ここまではいいのだが、ここでこういう勘違いが起こる。
ならフォームに制限を付けてしまえばいいだけじゃん!
JavaScriptで入力をチェックして、不正なデータは変換するなり、取り除くなりすればいいだけじゃん!
で、本題。
なんでこんな勘違いが起こってしまうのか。
それは、攻撃対象となっているページが、確認画面ではなく入力画面に思えてしまうじゃないだろうか。
だから、入力画面に行く手前ではじいてXSS対策をとった気になってしまうんじゃないだろうか。
ということで、確認画面が攻撃対象になっていることさえ正しく理解できれば、こういう誤解は発生しないんじゃないかな。
今まで勘違いを引き起こしていたのは、説明の仕方が悪かったのかも。
*1:の一部分