Commentというわけで、一応問題を全部解いたので、jerlsbergのドキュメントを一部サマリつつ、まとめ。Scripting(XSS)とはXSSとは、攻撃者の管理下に無いコンテンツに対し、実行コードを埋め込むことを許してしまう脆弱性です。通常、javasciptをHTML中に埋め込むことになります。ユーザーが、悪意のあるコードが埋め込まれてしまったサイトを閲覧すると、そのコードがユーザーのブラウザで実行されます。結果、攻撃者は、そのユーザーの個人情報の取得、ページの改竄、CSRFなどを引き起こすことが可能になります。(今回のケースでは、ユーザーのcookie値を取得するデモをおこないました)また、jerlsbergでは、XSSを以下の2種類に分けて説明しています。attackでは、攻撃コードそのものがURLに埋め込まれています。攻撃は、以下の流れで実行されます。ユーザーがブラウザ上で、攻撃者によって作成された悪意のあるURLリンクを踏んでしまう。サーバーがその攻撃に対するレスポンスを、ユーザーに返す。サーバーのエスケープ処理が不適切なことにより、攻撃コードがコンテンツに埋め込まれてしまい、結果、ユーザーのブラウザ上で、悪意のあるコードが実行されてしまう。attackでは、攻撃コードはサーバー上に保持(通常、データベース)されています。攻撃は、以下の流れで実行されます。攻撃者が、悪意のあるコードを事前にコンテンツに埋め込む。ユーザーが、コードが埋め込まれたコンテンツを参照する。サーバーは、ユーザーにレスポンスを返す。このときに、正しいエスケープ処理が実装されていないことにより、攻撃コードがレスポンス中に埋め込まれてしまい、結果、ユーザーのブラウザ上で実行されてしまう。Injection、後者をXSSと呼んでいるようです。Injectionは、悪意ある攻撃者がそのサイトにアクセスし、コンテンツを改竄。改竄されたコンテンツをユーザーが閲覧することで、攻撃が成立する。XSSでは、悪意のあるリンクをユーザーに踏ませることで、間接的に攻撃を行う。アクセスしたユーザーのブラウザに、悪意のあるリンクによる処理結果が(エスケープされずに)表示されることで、攻撃が成立する。XSSの防御方法XSSを防ぐには、「コンテンツを出力するときに、正しくエスケープすること」が必要になります。この「正しく」が難しい。通常、HTMLのエスケープ処理といった際には、HTMLタグのエスケープ(<→&lt;、>→&gt;へ変換したり、PHPのhtmlspecialcharsを使用)がまず頭に浮かびますが、これだけでは不十分なケースもあります。)XSSを防ぐには、少なくとも、以下が必要なのではないでしょうか。変数をHTMLに出力する際には、htmlspecialcharsなどで必ずエスケープする(設計上、確実に安全と思われる場合であっても、変数を出力する際には必ずエスケープする。することで、エスケープ実装漏れを防ぐことができる。エスケープ漏れが無いかをチェックするツールを作成してもよい。コメントをキャンセルメールアドレスが公開されることはありません。ThemeHall.。