XSS (Cross-Site Scripting) とは、Web アプリケーションの脆弱性を悪用して、ページに悪意のある JavaScript コードを注入し、ユーザーの Cookie、セッション情報、個人データなどを窃取する攻撃手法です。OWASP Top 10 に常にランクインする代表的な Web セキュリティ脅威です。
XSS には主に 3 つの種類があります。反射型 XSS (URL パラメータに含まれたスクリプトがそのまま表示される)、格納型 XSS (データベースに保存されたスクリプトが他のユーザーに表示される)、DOM ベース XSS (クライアントサイドの JavaScript で DOM を操作する際に発生する) です。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=XSS%20対策%20Web%20セキュリティ&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Amazon の関連書籍</a><% } else { %>Amazon の関連書籍<% } %>も参考になります。
短縮 URL サービスでは、ユーザーが入力した URL をページ上に表示する際に XSS のリスクがあります。URL に JavaScript コード (javascript: スキーム) が含まれている場合、適切なサニタイズなしに表示すると XSS 攻撃が成立します。入力値のバリデーションと出力時のエスケープが必須です。
XSS 対策の基本は、入力値のバリデーション、出力時の HTML エスケープ、CSP ヘッダーの設定、HttpOnly Cookie の使用です。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=OWASP%20セキュリティ%20ガイド&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">OWASP セキュリティガイド</a><% } else { %>OWASP セキュリティガイド<% } %>も役立ちます。