在PHP中,是否有可能检查谁正在进入您的网站。我有一个Web应用程序(用PHP编写),只应允许从某些特定网站进入的用户。通过检查_Request
对象来获取引荐网站是否可行?如果是,如何操作?
可以,但要记住一些代理和其他工具可能会去除此信息,并且它很容易被伪造。因此永远不要依赖它。例如,不要仅检查引用者是否与您自己的服务器匹配,就认为您的Web应用程序受到CSRF的保护。
$referringSite = $_SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ?
如果您只希望允许来自特定域名的请求,您需要解析一些 URL 来获取顶级域名。正如我所学到的那样,这可以使用 PHP 的 parse_url() 函数来完成。
正如 andyk 在评论中指出的那样,您还需要允许 www.example.com 和 example.com。
$_SERVER['HTTP_REFERER']
来获取引用站点,但不要把所有赌注都押在上面。浏览器设置此标头并且很容易被欺骗。您不能信任引用者。尽管它来自$_SERVER
数组,但它实际上是用户/浏览器提供的值,并且可以轻松伪造,使用例如Firefox的RefControl插件等工具。