English 中文(简体)
在PHP中检查引荐者
原标题:
  • 时间:2009-01-09 02:10:48
  •  标签:

在PHP中是否可以检查谁正在进入您的网站。我有一个Web应用程序(用PHP编写),应仅允许从某些特定网站进入的用户。可以通过检查 _Request 对象来获取引荐网站吗?如果可以,如何获取?

最佳回答

是的,但请记住,一些代理和其它工具会剥离这些信息,而且它们可以很容易地被伪造。因此,永远不要依赖它。例如,不要认为通过检查引用者与您自己的服务器匹配来保护您的 Web 应用程序免受 CSRF 的攻击。

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

如果你想只允许特定域名的请求,你需要解析一部分URL来获取顶级域。随着我的学习,我发现可以使用PHP的parse_url()来完成这个任务。

As andyk points out in the comments, you will also have to allow for www.example.com and example.com.

问题回答

虽然您可以查看 $_SERVER [ HTTP_REFERER ]来获取引用站点,但不要指望它。浏览器设置了此标头,易于伪造。

If it s critical that only people coming from specific referrers view your site, don t use this method. You ll have to find another way, like basic auth, to protect your content. I m not saying that you shouldn t use this technique, just keep in mind that it s not fool-proof.

顺便提一下,您也可以使用mod_rewrite在apache层面上阻止引荐者,详情请见这里

您不能信任引荐人。尽管来自$_SERVER数组,但实际上是用户/浏览器提供的值,很容易被伪造,使用像Firefox的 RefControl插件这样的东西。

You need to examine the $_SERVER array for the HTTP_REFERER key.





相关问题
热门标签