1 回答
TA贡献1843条经验 获得超7个赞
一种简单的方法是创建一个允许值的数组,并使用循环。创建一个布尔值,说明用户是否来自允许的站点,将其默认设置为 false。在遍历允许的站点时,如果引用者匹配任何允许的站点,则将此布尔值更改为 true。
$allowed_sites = ['example.com', 'example2.com'];
$referrer_is_allowed = false;
foreach($allowed_sites as $url) {
if(strstr($_SERVER['HTTP_REFERER'], $url)) {
$referrer_is_allowed = true;
}
}
echo $referrer_is_allowed ? 'yes' : 'no';
请记住,这并不能保证任何特定用户实际上来自HTTP_REFERER您正在检查的用户,原因有几个。
$_SERVER['HTTP_REFERER']很容易被欺骗,并且不能真正信任安全性。
诸如此类的引用者site_not_allowed.com/example.com仍会通过此检查。
您至少可以通过检查引荐来源网站是否以允许的网站开头来保护自己免受第二个问题的影响,如下所示:
foreach($allowed_sites as $url) {
$referrer = str_replace(['http://', 'https://'], ['',''], $_SERVER['HTTP_REFERER']);
if(substr($referrer, 0, strlen($url)) === $url) {
$referrer_is_allowed = true;
}
}
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报