2012-04-02 58 views
0

ユーザーがサーバーにajaxリクエストを送信した完全なドメインを取得する必要があります。これはいくらか安全です。 Php、ajaxリクエストからRefererを取得

$_SERVER['HTTP_REFERER'] 

空白を返します。 どのような機能を使用する必要がありますか? ありがとうございます。

+0

ブランクではないかもしれませんか? –

+1

@AlexAmiryan、これにはどんな解決策がありますか? – funerr

答えて

4

ブラウザによっては、XHRリクエストで参照元データを送信しない場合があります。リファラーヘッダーはオプションで、とにかく偽造することができます。だから:あなたはすることはできません。

Same Origin Policyはあなたに必要なすべての保護を提供する可能性があります(ただし、あなたのユースケースについては明確ではありませんので、確実に言い表せません)。

+0

ajaxリクエストは機能しますが(私はPHP経由で設定しましたが)、リモートドメインを取得しません。 – funerr

+0

$ _SERVER ["HTTP_REFERER"]は信頼すべき値ではありません。この値は、ユーザーが好きなものに設定できます。さらに、ユーザーは手動でリファラーを無効にすることができます。リファラーなしで動作するようにスクリプトを修正してみてください。ただし、リファラーの価値については気にしないでください。 – TRD

+0

@TRDだから私は何を使うべきですか? – funerr

1

あなたの目的は、許可されていない/過剰なリクエストによってサーバーAPIがヒット/スパムされるのを防ぐためです。このような状況で、あなたが調べようとしているすべてのものを偽装することができる場合は、代わりに作業証明アルゴリズムを試してみてください。

はあなたに処理すべきデータを送信する(計算サイクルで)「賃金」にクライアントを強制することによりhttp://hashcash.org

を見てください、あなたはあなたの問題を引き起こしてから一般的なボットをフィルタリングすることができます。

関連する問題