0

ブラウザでオフになっている場合でも、リファラーを http-request で送信する方法があるかどうか疑問に思っていました (たとえば、javascript を使用)。

リファラーが送信されないときに発生する問題:

私は攻撃の変更を最小限に抑えようとしているので、ページが読み込まれるたびにセッションキーを変更しています...セッションIDは同じままですが、キーは変更されます...基本的にページにスクリプトまたはスタイルファイルがある場合サーバーから送信する必要があるリファラーは、それらを正しく表示する必要があるページ、またはスクリプトを必要とするいくつかの部分を含むページです。サーバー上の別のページに変更すると、リファラーが変更されます。わかりました、説明するために、ここにパターンがあります(理解できない場合は、そう言ってください):

start:  GET test.html --> referrer := null
            `--> GET style.css --> referrer := test.html
---- CLICK ON LINK TO GO TO: 'form.html'
        GET form.html --> referrer := test.html
            `--> GET sendRequest.js --> referrer := form.html
            `--> GET style.css --> referrer := form.html
---- CALL A PAGE DIRECTLY OVER ADDRESS BAR: http://somedomain.com/someotherpage.html
        GET someotherpage.html --> referrer := null

したがって、セッションキーの変更を機能させるには:リファラーがnullの場合、または別のページに変更する場合にのみセッションキーを変更します...しかし、「リファラーの送信」がオフになっている場合は機能しません。 Opera を使用するときに行うことができます... b/c の場合、refer(r)er は常に null であり、クライアントが style.css のリクエストを test.html-page b/c から送信してから new を送信すると、問題が発生します。 sessionkey が設定されますが、style.css の要求は古い sessionkey で受信されます...そのため、最も簡単な方法 (おそらく何かが不足していると思います) は、 refer(r)er を使用することです。 ..

4

3 に答える 3

5

あなたはこれを複雑にしすぎたと思います。

セッションが機能するには、Cookie を有効にする必要があります。現在のセッション キーのコピーを含む Cookie を追加します。html ファイルが要求されるたびに、Cookie キーとセッション キーが一致するかどうかをテストします。そうでない場合は、リプレイ アタックが発生している可能性があります。先に進み、.css、. などの要求を無視します。本当に気にする必要があるのは、html ファイルだけです。

キーを更新し、html ファイルが要求されるたびにセッション変数と Cookie に書き込みます。

このリファラーを使用すると、重要ではなく (なりすましの可能性があります)、リプレイから保護されます。それは、あなたが最終的に求めているものだと思います。

于 2009-07-24T15:03:53.097 に答える