gpt4 book ai didi

php - 如果不是来自某些 referer(s) PHP,则限制访问

转载 作者:可可西里 更新时间:2023-11-01 00:34:58 27 4
gpt4 key购买 nike

我绞尽脑汁想知道为什么这不起作用。

我想要实现的是限制对我自己网站上页面的访问,仅当来自某个网​​站(例如 Facebook)时。

由于链接将发布在 1 个或多个 Facebook 页面和/或我的个人资料上,如果脚本来自 Facebook 和/或它发布的任何其他“页面”,我希望脚本能够执行。

例如,如果我将我的链接发布到 www.facebook.com/This_is_my_PAGE 或发布到我的个人资料 www.facebook.com/freds_personal_profile 或有人分享我在 Facebook 上的链接,希望该页面只能由来自 Facebook 域的人访问。

我在搜索解决方案时发现了下面的脚本,但它正在回应我的错误消息,而不是重定向到有问题的链接。

$target_site = 'https://www.facebook.com/';
if (isset($_SERVER['HTTP_REFERER']) && preg_match("/$target_site/",$_SERVER['HTTP_REFERER'])) {
// do something with people from facebook.com
}

else {
// do something else with everyone else

echo "Sorry, viewable to Facebook fans only.";

}

最佳答案

首先,您的代码存在缺陷,因为:

  • 如果用户没有使用 Facebook 的“安全版本”(http 而不是 https)怎么办?
  • 如果用户来自 facebook.com 而不是 www.facebook.com 怎么办?
  • 如果恶意用户诱使用户从 http://example.com/evilpage.php?https://www.facebook.com/ 等网站访问怎么办?

它不起作用的主要原因是您的正则表达式完全无效。相反,它应该遵循:

preg_match("/".preg_quote($target_site,"/")."/i",$_SERVER['HTTP_REFERER']);

( documentation on preg_quote() )

除此之外,检查引荐来源网址并不安全。它可以改变,也可以完全封锁。不应依赖它。

关于php - 如果不是来自某些 referer(s) PHP,则限制访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com