まとめクロスサイトスクリプティング(以降XSSと表示)とはWEBアプリへの攻撃手法のひとつにこれがあります。どの様に攻撃されるのでしょう。アンケートや商品購入サイトで、利用者はなにがしらの情報を入力する箇所があると思います。この入力箇所に悪意のある文字が入力され、この入力内容がWEBブラウザで表示された時、WEBアプリが想定しない表示になり、これを不正に利用することで発生します。WEBアプリが想定しない表示をWEBブラウザがするのか大雑把に言うとWEBブラウザは「表示、動作する情報」とこれ以外の「文字や画像の情報」(画像も含めると理解が難しいので以降は「文字の情報」とします)を区別し表示させます。この区別を悪意を持って操作することでWEBアプリが想定しない表示をします。次にこの区別の方法ですが、簡単に言えば「<」と「>」で囲まれた箇所が「表示、動作する情報」と区別されます。よって、この文字をWEBアプリの入力箇所にいれて、この文字をWEBブラウザが表示する時、想定しない表示になります。世の中にあるWEBアプリは全てこの様なものなのかそれは違います。対策をされている場合、この様なことは発生しません。対策を正しく実施している場合、XSS攻撃を回避できます。WEBアプリの製造者が正しく意識しないと対策できていません。なにも意識せずともセキュアなWEBアプリをつくれるのではありません。最近はマニュアル通り作ればセキュアなWEBアプリをつくれる様になってきてますが、「意識せずとも」までには至っていない様に思われます。どの様な対策が必要なのでしょう?対策1(究極の対策)WEBアプリになにも、入力させない→なにも、入力されなければ、XSS攻撃もできません。入力を必要とするWEBアプリはこの対策はありえません。対策2(保険的対策)入力チェックで「表示、動作する情報」を入力させない。→なんらかの方法で入力チェックをすり抜けて、入力された場合、XSS攻撃は成立します。よってこれは保険的な対策になります。対策3(あるべき対策)入力内容を表示する全ての箇所に「表示、動作する情報」を出力させない対策になります。XSSはブラウザが「文字の情報」と認識してほしいところ「表示、動作する情報」として認識してしまうところにあります。よって、「文字の情報」に「表示、動作する情報」の文字が入力された場合でも、「文字の情報」としてしか認識されない様にすることで攻撃を回避できます。具体的には以下の様な文字変換です。「>」→「&ampgt;」WEBブラウザは「<」を「文字の情報」として表示させたいのであれば「&amplt;」にしてくれたらいいよと言う約束ごとがあります。これに変換することでXSSの対策が可能です。※変換すべき文字はこれだけではありません。まとめいかがでしょうか。大雑把でありますが、基本的な流れは押さえられていると思います。他にもいろいろと攻撃されることがあります。以下に参考になるサイトリンクを付けておきますので、セキュアなWEBアプリを構築するために理解を深めていただければと思います。細かなことを言うと入力内容を出力する箇所により、変換すべき文字、方法が変わることを意識してください。