避免其他网站查询我的file.php

时间:2011-08-09 16:02:31

标签: php security

我有一个file.php?q =返回json数据的数据,但我不希望其他网站查询 我的数据库通过这个文件,我不知道该怎么做。我刚才有这个:

if($_SERVER['HTTP_HOST'] != $_SERVER['SERVER_NAME']) exit();

您是否知道如何处理此安全问题?非常感谢你。

5 个答案:

答案 0 :(得分:1)

所以你想让用户访问这些文件(可能是通过你的其他网页),但不希望竞争对手访问这个网页?然后你需要了解一下竞争对手与普通用户的不同之处。这个问题没有明确的防弹解决方案。

您可以尝试通过实施某种身份验证和计算用户的请求编号来限制用户访问。但这些都是半措施。

答案 1 :(得分:0)

尝试使用HTTP_REFERER变量的$_SERVER部分。

此外,您可以使用一些mod_rewrite规则来防止文件的热链接。 See tutorial here

答案 2 :(得分:0)

如果您确实存在安全问题,则需要控制访问权限。这可以通过要求认证来访问所讨论的URL来完成,例如,通过使用HTTP authentication with PHP

对于一些易于规避的预防措施,您可以检查某些浏览器发送的HTTP Referer Header:

  

$_SERVER['HTTP_REFERER']Docs -   将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它无法真正被信任。

相关:How to protect download URLs to be stolen with PHP?

答案 3 :(得分:0)

HTTP_HOST和SERVER_NAME始终引用您的服务器。您无法以这种方式检测远程用户。 HTTP_HOST是URL中用户请求的站点名称。 SERVER_NAME(通常)是服务器本身的名称,和/或在Apache中指定为'ServerName'的任何名称。

HTTP_HOST和SERVER_NAME通常不同。服务器本身可能被命名为“someweird numbers.your.hosting.company.com”,而HTTP_HOST将被命名为“yoursite.com”。

答案 4 :(得分:0)

假设是访问数据的Web访问者,在访问任何页面(或包含file.php链接的页面)时设置PHP会话变量。然后让file.php检查该变量是否存在。

; o)Cor