AJAXセキュリティ
非同期JavascriptおよびXML(AJAX)は、リッチなユーザーエクスペリエンスを提供するためにWebアプリケーションを開発するために使用される最新の手法の1つです。これは新しいテクノロジーであるため、まだ確立されていない多くのセキュリティ問題があり、以下はAJAXのいくつかのセキュリティ問題です。
保護する入力が多いほど、攻撃対象領域は多くなります。
また、アプリケーションの内部機能も公開します。
認証情報とセッションの保護の失敗。
クライアント側とサーバー側の間には非常に狭い境界線があるため、セキュリティミスを犯す可能性があります。
例
これがAJAXセキュリティの例です-
2006年、Yahoo Mailのオンロードイベント処理の脆弱性を利用した、XSSとAJAXを使用したワームに感染したyahooメールサービス。感染した電子メールが開かれると、ワームはJavaScriptを実行し、感染したユーザーのすべてのYahoo連絡先にコピーを送信しました。
ハンズオン
Step 1− XMLインジェクションを使用して、許可された一連の報酬にさらに報酬を追加する必要があります。以下はシナリオのスナップショットです。
Step 2− BurpSuiteを使用してリクエストとレスポンスの両方をインターセプトするようにしてください。以下と同じ設定です。
Step 3−シナリオで指定されたアカウント番号を入力します。対象となるすべての報酬のリストを取得できるようになります。5つのうち3つの報酬を受け取る資格があります。
Step 4−次に、[送信]をクリックして、応答XMLで何が得られるかを確認します。以下に示すように、私たちが適格である3つの報酬はXMLとして私たちに渡されます。
Step 5 −次に、これらのXMLを編集し、他の2つの報酬も追加しましょう。
Step 6−これで、すべての報酬がユーザーに表示され、ユーザーが選択できるようになります。追加したものを選択し、[送信]をクリックします。
Step 7 −「*おめでとうございます。このレッスンは正常に完了しました。」というメッセージが表示されます。
予防メカニズム
クライアント側-
- .innerHtmlの代わりに.innerTextを使用します。
- evalは使用しないでください。
- セキュリティのためにクライアントロジックに依存しないでください。
- シリアル化コードの記述は避けてください。
- XMLを動的に構築することは避けてください。
- シークレットをクライアントに送信しないでください。
- クライアント側のコードで暗号化を実行しないでください。
- クライアント側でセキュリティに影響を与えるロジックを実行しないでください。
サーバー側-
- CSRF保護を使用します。
- シリアル化コードの記述は避けてください。
- ユーザーはサービスを直接呼び出すことができます。
- 手作業でXMLを作成することは避け、フレームワークを使用してください。
- 手作業でJSONを構築することは避け、既存のフレームワークを使用してください。