PHP 新手在这里,疯狂地挣扎着想知道如何在我可悲的无能下载系统中实现基于 HTTP_REFERER 的安全功能。
基本上,我的文件下载页面在 URL 的末尾附加了一个特定的字符串,这个特定的字符串是:
?thanks
如果这在 URL 中可见,则用户将能够下载位于其上的文件。它工作得很好,但很容易通过简单地将“?谢谢”部分添加到 URL 本身来“解锁”页面。有效地允许用户绕过我笨拙的安全性并轻松访问我的高级文件。
如果可能的话,我想添加一个安全措施,让任何试图访问包含字符串“?谢谢”的页面的人都被重定向到主页。这将为我提供完美的解决方案。
为清楚起见,典型的预下载过程如下所示:
- 用户访问下载页面:[网站]/download/page/123/
- 用户完成 Recaptcha,被重定向到这里:[website]/download/page/123/?pending
- 用户填写详细信息,被重定向到这里:[website]/download/page/123/?thanks
- 用户收到他们的文件
啰嗦,是的,但对于我不寻常的要求来说,这将是非常理想的。我也知道用户可以通过首先在 URL 中附加“?pending”然后附加“?thanks”来解决这个问题,但它仍然非常非常有用。
那么,StackOverflow,你们中的任何一个干瘪而善良的编码人员可以帮助一个初出茅庐的网页设计师吗?我感谢您的任何帮助。干杯,伙计们。
编辑:哦,这是最后一次尝试但遭到可怕轰炸的一种失败方法,以防万一它有助于进一步说明我的目标:
if (('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] == wp_get_shortlink().'?thanks') && (isset($_SERVER['HTTP_REFERER']) && preg_match("/".preg_quote('?pending',"/")."/i",$_SERVER['HTTP_REFERER']))) {
echo 'Hurrah!';
} else {
echo 'Oh dear.';
}