--- title: Cross-site scripting (クロスサイトスクリプティング) slug: Glossary/Cross-site_scripting tags: - Cross Site Scripting - DOM - Glossary - Security - XSS translation_of: Glossary/Cross-site_scripting ---
クロスサイトスクリプティング(XSS)とは、悪意あるクライアントサイドのコードを Web サイトに差し込むセキュリティ攻撃です。差し込まれたコードは被害者のブラウザー上で実行され、アクセス制限の回避やユーザーへのなりすましなどにつながります。Open Web Application Security Project の調べによると、XSS は 2017 年において 7 番目に多い Web アプリの脆弱性 でした。
この攻撃が成功してしまうのは、Web アプリにバリデーションとエンコーディングが十分に実装されていない場合です。ユーザーのブラウザーは、悪意あるスクリプトを信頼できないものとして検知できません。そのため、任意の cookie やセッショントークン、Web サイト固有の機密情報などにアクセスされたり、悪意あるスクリプトによって {{glossary("HTML")}} のコンテンツが書き換えられてしまいます。
クロスサイトスクリプティング攻撃は、1) 信頼できない送信元(ほとんどは Web リクエスト)から Web アプリにデータが入力されるとき、または 2) 悪意あるコンテンツかどうかの検査をせずに動的なコンテンツを Web ユーザーに送信するときに起こります。
往々にして悪意あるコンテンツは {{glossary("JavaScript")}} を含んでいますが、HTML や Flash、ブラウザーで実行可能な他のコードを含んでいる場合もあります。XSS に基づく攻撃手法はほぼ無限に存在しますが、cookie やセッション情報といった秘密の情報を攻撃者に送信したり、攻撃者の用意した Web ページに被害者をリダイレクトさせたり、本来の Web サイト(脆弱性を含む)を装いつつユーザーのマシン上で悪意ある処理を行ったりすることが多いです。
XSS 攻撃の種類は、格納型(持続型)・反射型(非持続型)・DOM-based の 3 つに分類することができます。