クロスサイトスクリプティングの脆弱性は2000年代初頭から攻撃者によって悪用されており、XSSは2004年からWEBアプリケーションの重要なセキュリティリ しかし、多くの開発者、システム管理者、さらには一部の侵入テスターはまだ真剣にそれを取ることはありません。 効果的なwebアプリケーションハッカーやディフェンダーになるためには、XSS攻撃を防ぐ方法の基本を理解する必要があります。
XSS攻撃はまだ問題です
クロスサイトスクリプティングは、攻撃者が正当なwebアプリケーション内で被害者のブラウザに悪意のあるクライアント側のコードを注入して実行することを可能にするwebアプリケーションの脆弱性の一種です。
成功したXSS攻撃の影響と重大度は様々です。 XSS攻撃は、セッションハイジャック、盗まれたトークン、盗まれたセッションcookie、クロスサイトリクエスト偽造攻撃を引き起こす可能性があります。 これらの攻撃は、ユーザーアカウントが侵害される可能性があります。
XSS攻撃が成功すると、攻撃者は盗まれたcookieまたは偽造されたcookieを使用して有効なユーザーを偽装することもできます。 有効なユーザーがアプリケーション内の管理者権限を持っている場合、攻撃者はそれらの権限を使用してページを変更したり、アプリケーションのサーバー側で
XSS攻撃の種類
xss攻撃には、格納型、反射型、ドキュメントオブジェクトモデル(DOM)ベースの三つのタイプがあります。
- ストアドXSS攻撃は、攻撃者が脆弱なページに悪意のあるスクリプトを埋め込むことを可能にし、被害者がページを表示したときに実行されます。 格納されたXSSは、XSS攻撃の最も有害なタイプと考えられています。 たとえば、攻撃者が悪意のあるJavaScriptペイロードを脆弱なwebアプリケーションに直接注入すると、webブラウザは注入されたJavaScriptペイロードを保存します。 その後、被害者がそのwebサイトまたはwebアプリケーションを訪問するたびに、悪意のあるコードが実行されます。
- 反射されたXSS攻撃は、悪意のあるペイロードがリンクに埋め込まれ、ユーザーがリンクをクリックしたときにのみアクティブ化されたときに発生します。 ここでは、悪意のあるペイロードは保存されず、URLまたはPOSTデータの形式でwebページにのみ表示されます。
- domベースのXSSの脆弱性は、チェックせずに処理できるユーザー入力を含む動的コンテンツを生成するためにDOMが使用される場合に発生します。 この種の攻撃は、被害者のブラウザ
XSS攻撃防止
Xss攻撃を防ぐために、開発者は特殊文字を適切にフィルタリングまたはエスケープし、保存されたXSS攻撃と反射されたXSS攻撃を防ぐために出力をエンコードすることによって、ユーザーの入力を検証する必要があります。 次の特殊文字は、悪意を持って悪用されるのを防ぐために、常に除外またはエスケープする必要があります:
< |
> |
“ |
‘ |
) |
( |
& |
開発者は、DOMベースのXSS攻撃を防ぐために、ユーザー入力ソースを検証し、出力シンクをエンコードする必要があります。 Input sourceプロパティはDOMが読み取る場所であり、ソースは攻撃者がXSSの脆弱性を悪用するために悪意のあるコードを注入できる場所です。 次のソースプロパティは避ける必要があります:
- URL
- documentURI
- location
- href
- search
- hash
シンクは、DOMが入力(ソース)から悪意のある文字やコードを実行し、webページに出力されるポイントです。 これらのシンクは、サービス拒否ベースのXSS攻撃を防ぐために避ける必要があります:
- innerHTML
- outerHTML
- write
Xss攻撃の理解と防止をより良くしたい場合は、Googleはこれらの攻撃がどのように機能し、より良い防止方法を学ぶためのXSSゲーム OWASPのMutillidae2プロジェクトは、webセキュリティの専門家がXSS攻撃防御を強化するための学習目標も提供しています。