18

PHPで誰があなたのウェブサイトにアクセスしているかを確認することは可能ですか?特定のWebサイトからのユーザーのみのアクセスを許可するWebアプリケーション(PHPで記述)があります。_Requestオブジェクトを調べることで紹介Webサイトを取得することは可能ですか?はいの場合、どのように?

4

4 に答える 4

28

はい。ただし、一部のプロキシなどではこの情報が削除され、簡単に偽造される可能性があることに注意してください。したがって、決してそれに依存しないでください。たとえば、リファラーが自分のサーバーと一致するかどうかを確認するため、WebアプリがCSRFから安全であるとは思わないでください。

$referringSite = $_SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ?

特定のドメインからのリクエストのみを許可する場合は、URLの一部を解析してトップレベルドメインを取得する必要があります。私がもっと学んだように、これはPHPのparse_url()で行うことができます。

andykがコメントで指摘しているように、www.example.comとexample.comも許可する必要があります。

于 2009-01-09T02:20:12.557 に答える
6

参照サイトを取得するために見ることはできますが$_SERVER['HTTP_REFERER']、ファームに賭けないでください。ブラウザはこのヘッダーを設定しますが、簡単にスプーフィングされます。

特定のリファラーからの訪問者のみがサイトを閲覧することが重要な場合は、この方法を使用しないでください。コンテンツを保護するには、基本認証などの別の方法を見つける必要があります。このテクニックを使うべきではないと言っているのではありません。

ところで、 mod_rewrite を使用して、Apache レベルでリファラーをブロックすることもできます。

于 2009-01-09T05:06:03.550 に答える
4

リファラーを信頼することはできません。配列から$_SERVER取得されますが、実際にはユーザー/ブラウザーが提供する値であり、Firefox RefControl アドオンなどを使用して簡単に偽造できます。

于 2009-01-09T14:29:31.830 に答える
0

$_SERVER配列で「HTTP_REFERER」キーを調べる必要があります。

于 2009-01-09T02:13:20.497 に答える