基本的なパターンに従う ajax リクエストがいくつかあります。
function(visitorId, sessionId, ...parameters more specific to method call..)
訪問者とセッション ID は、サーバー側でランダムに生成されます。訪問者 ID とセッション ID は、ソフトウェアのライブ セッションで実際の訪問者を検証するために常に使用されます。署名付きの 1 つのメソッド:
function(visitorId, sessionId, issueId)
として表される現在の顧客の問題の状態 (オープン、クローズ、待機中など) を返しますint
。今日、ある顧客から、この特定の方法がクロスサイト リクエスト フォージェリに対して脆弱であるというセキュリティ レポートが報告されました。
テスト結果は、同じリクエストが異なるセッションで 2 回送信され、同じレスポンスが受信されたため、脆弱性を示しているようです。これは、どのパラメーターも動的ではない (セッション ID は Cookie でのみ送信される) ため、アプリケーションが CSRF に対して脆弱であることを示しています。
注意すべき点がいくつかあります。
これらのメソッドは、重要な場合、POST リクエストでのみ使用できます。
ソフトウェアの「セッション」は、ブラウザや IIS のセッションに関連付けられていません。私たちのソフトウェアは Windows サービスであるため、IIS がダウンしたり、ブラウザが閉じたりする可能性があります。内部のセッション トラッカーがそのセッションを削除する時間を決定するまで、そのセッションを保持します。
3. Ajax 要求が WCF サービスに送信され、WCF サービスがその要求を Windows サービスに中継します。
私たちのメソッドの大部分は静的パラメーターのこのパターンに従いますが、一意のデータを返す傾向があるため、これには頭を悩ませています。このセキュリティ テストに合格する可能性のあるランダム データと一緒に状態を返すだけでよいのではないかと思いますが、それは正しくないようです。これにアプローチする最良の方法は何ですか?