【发布时间】:2013-04-05 18:03:30
【问题描述】:
这里是 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.';
}
【问题讨论】: