PHP:检查 $_SERVER ['HTTP_REFERER' ] 相等性的最佳方法是什么?

标签 php security

我有一个检查 HTTP Referer 的 PHP 脚本。

if ($_SERVER['HTTP_REFERER'] == 'http://www.example.com/') {...}

但是,这似乎本质上是不安全的……因为如果用户访问 'http://example.com/''http://www.ExaMple 会发生什么。 com'(两者都不符合相等性测试)。

问题:什么是更好的相等性测试来确保 HTTP Referer 来自 'example.com'

最佳答案

parse_url()结合一些字符串杂耍应该做你想做的。试试这个:

$url = parse_url($_SERVER['HTTP_REFERER']);
//take the last two 'dot segments' of the host
$hostOnly = implode('.',array_slice(explode('.',$url['host']),-2));
if (strtolower($hostOnly) == 'example.com') {
    //stuff
}

请注意,parse_url() 可能会在格式错误的 URL 上失败,因此您可能需要添加一些错误检查以确保安全。 HTTP_REFERER 很容易被垃圾填满。

关于PHP:检查 $_SERVER ['HTTP_REFERER' ] 相等性的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580674/

相关文章:

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - jquery ajax在php中发布数据仅在第一次时有效

php - 关于正确查询的问题

.net - 最安全的软件许可方式

c# - 以编程方式确定是否启用了 Windows 8 安全启动

java - 如何为 Java Web 应用程序设置 httponly 和 session cookie

javascript - 使用 javascript 根据客户所在国家/地区翻译网站

php - 通知: Undefined index ajax

php - 从 php、javascript 中的 url(网页)解析特定内容

database - 使用你正在散列的散列作为盐?