XSS攻撃についてのまとめ

2008 ワード

昨晩の面接で最初の質問がプロジェクトに登録されたXSSとCSRF攻撃について聞かれましたが、これまでの面接とは違って、今回は実戦に偏っているような気がします.今日はこの方面の内容を検討してみます.
  • 意味:XSSすなわちクロスステーションスクリプト(Cross Site Scripting)は、かつてCSSと略称されていたが、カスケードスタイルシート(Cascading Style Sheets)、つまりフロントエンドの3つの要素の1つであるCSSと区別するため、XSSと呼ばれている.詳細はXSS概要
  • を参照
  • 原理:よく知られているように、HTMLは超テキストタグ言語であり、先端言語の「骨」として、いくつかの文字を特殊に扱うことでテキストとタグを区別し、最も一般的なのは

    (PS:markdownフォーマットが文法フォーマットと見なすことを忘れるところだった)では、攻撃者は何らかの手段で

  • 分類:主に三大類
  • に分けられる
  • 反射性XSS、フロントからのリクエスト時にXSSコードがURLに表示され、入力としてバックグラウンドに提出され、バックグラウンド解析後に応答し、XSSコードは応答内容とともにフロントブラウザに返信され、最後にブラウザ解析はXSSコードを実行する.
  • ストレージ型XSSは、ストレージ型XSSと反射型XSSの差は大きくなく、ストレージ型XSSは直接実行されず、コミットされたコードはデータベースなどのバックグラウンドに格納されてキャッシュされ、次回ターゲットページを要求する際にXSSコードをコミットすることなく、バックグラウンドから直接呼び出される.私たちのウェブサイトの1つのBUGを発見したことを覚えていて、1段のコード
  • を提出します
    <script>alert('Hello,World!');</script>
    

    コード評価サイトとして、提出内容を見ることができ、見ると弾け窓が現れる.閲覧申請を行うと、システムがデータベースから内容を照会して表示するため、ブラウザはXSSコードを発見し、ブラウザは特殊文字を認識していないため、正常なHTMLとJs解析として実行し、XSS攻撃をトリガーし、修復方式はHTMLに転義する.
  • DOM XSSは,前者と異なり,DOM XSSはバックグラウンドサービス側の参加を必要とせず,フロントブラウザのみに関係し,XSSをトリガするのはブラウザ側のDOM解析である.このような攻撃による結果はDOM操作に関係し,あるノードの内容を出力し,DOMツリーを修正したり,DOMノードの削除を増やしたりすることができる.
  • 防御:
  • 入力フィルタ出力エスケープ:入力フィルタリングは、コミットされたすべてのコンテンツをフィルタリングし、url中のパラメータをフィルタリングし、スクリプト実行につながる関連コンテンツをフィルタリングします.例えば、パラメータ内のすべてのjavascriptというキーワードを検索しますが、この鑑別は柔軟ではありません.コミットされた情報にそれぞれjavascriptがある場合、硬くXSS攻撃と判定されます.出力エスケープは、ページに動的に出力されたコンテンツをhtml符号化し、スクリプトをブラウザで実行できないようにします.
  • HTTPヘッダに、set-cookie:httponly-というプロパティを付けると、XSSが防止され、javascriptスクリプトによるクッキーへのアクセスが禁止されます.Secure-このプロパティは、ブラウザがhttpsを要求したときにクッキーを送信するだけであることを示します.