我有一台前端服务器,其中包含用户可以下载的各种信息以及包含这些文件的一些后端服务器。当用户单击文件的下载链接时,他们将重定向到具有这些文件的后端服务器。
现在我想在后端服务器中接受请求,当且仅当请求从前端服务器重定向时,才能使用户无法直接访问后端服务器。 < / p>
有没有办法做到这一点?请帮帮我!
谢谢
答案 0 :(得分:1)
if(isset($_SERVER['HTTP_REFERER']) && ($_SERVER['HTTP_REFERER']=='yoursite.com' ) {
}
'HTTP_REFERER' - 将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它实际上不可信任(source)。
答案 1 :(得分:0)
问题在于,当您的前端服务器将用户重定向到后端服务器时,它会“通过用户”执行此操作。
也就是说,“www.front-end.com”告诉用户为她的HTTP referer标题字段分配值“www.front-end.com”,然后将此HTTP请求发送到“www” .back-end.com”。智能用户可以修改她的标题并欺骗您的系统。
对于您的情况,您应该做更多的工作并实现Rapidshare或Megaupload或大多数其他文件主机所做的事情。
其中一个想法可能如下:前端生成一个秘密随机字符串(“$ ticket”)。然后它将它传递给后端(通过curl或直接),要求将其存储到后端的数据库中。然后,前端以下列方式重定向用户:
header("Location: http://www.back-end.com/index.php?ticket=$ticket");
后端比较故障单并允许用户进入。
你还需要防止滥用它,就像在一段时间后使门票失效一样。