2

以前に foo.php でリファラーを使用して、ページ iframe foo.php が特定の URL のものであるかどうかを判断しました。(使用$_SERVER['HTTP_REFERER'])

ほとんどの場合 (約 98% の確率で) 動作することが判明しましたが、一部のユーザーがページに到着したよう$_SERVER['HTTP_REFERER']で、foo.php に設定されていなかったため、コードが壊れていたようです。[更新: これらのユーザーは、通常のページ フローに従い、ブラウザーで foo.php の URL を単独で使用せず (iframe にした)、ユーザーがブラウザーの設定を変更したことはないと主張しました。]

それが起こる可能性がある理由は何ですか?

4

2 に答える 2

6

HTTP/1.1 RFCでは、HTTP リファラー ヘッダーの送信は必須ではありません。堅牢なコードを作成する際に、その存在を想定することはできません。完全に準拠したブラウザには、それが含まれていない場合があります。

さらに、RFC は、「ユーザーのキーボードからの入力など、独自の URI を持たないソースから Request-URI が取得された場合、Referer フィールドを送信してはならない」とアドバイスしています。 、From および Referer 情報の送信を有効または無効にするための便利なトグル インターフェースがユーザーに提供されること」 .

後者はあまり一般的ではありません (一部のブラウザーには、要件を満たす「プライベート」モードがあります)。あなたの 2% は、人々が最初の基準 (URI なしでソースから取得した URI) を満たす URL をブックマークしたため、ブラウザーがリファラーを送信しない可能性が高いです。

于 2009-05-25T18:30:10.283 に答える
1

デフォルトではありませんが、(プライバシーのために) Firefox で about:config などを使用して簡単にオフにすることができます。一部のユーザーは、(IT 部門などから) 配布されたブラウザーをそのような設定で使用している可能性があります。そのため、重要な機能については REFERER に依存しないようにする必要があります (もちろん、つづりが間違っているためです;-)。

于 2009-05-25T18:29:50.593 に答える