XSS (Cross-Site Scripting) とは、 Web アプリケーションの脆弱性を悪用して、ページに悪意のある JavaScript コードを注入し、ユーザーの Cookie 、セッション情報、個人データなどを窃取する攻撃手法です。 OWASP Top 10 に常にランクインする代表的な Web セキュリティ脅威です。
XSS には主に 3 つの種類があります。反射型 XSS (URL パラメータに含まれたスクリプトがそのままページに表示される) 、格納型 XSS (データベースに保存されたスクリプトが他のユーザーに表示される) 、 DOM ベース XSS (クライアントサイドの JavaScript で DOM を操作する際に発生する) です。格納型 XSS は影響範囲が最も広く、最も危険です。
XSS 対策の基本は多層防御です。第一に、入力値のバリデーション (ホワイトリスト方式で許可する文字種を制限) 。第二に、出力時の HTML エスケープ (< を < に、 > を > に変換) 。第三に、 CSP ヘッダーの設定 (インラインスクリプトの実行を禁止) 。第四に、 HttpOnly Cookie の使用 (JavaScript から Cookie にアクセスできなくする) 。これらを組み合わせることで、 XSS のリスクを大幅に軽減できます。
短縮 URL サービスでは、ユーザーが入力した URL をページ上に表示する際に XSS のリスクがあります。特に javascript: スキームの URL を許可すると、リンクをクリックした際に任意の JavaScript が実行されます。 URL のプロトコルを http:// と https:// に限定するホワイトリスト検証が必須です。関連書籍は Amazon でも探せます。