当我连接到我的数据库时include('connect.php')
要连接的文档。
现在我想要做得更安全一些。是否可以检查想要包含connect.php
的人是否来自我的域。像:
if($_SERVER["HTTP_REFERER"] == "mydomain.com"){
$link = mysql_connect("localhost","user","password");
mysql_select_db("dbname");
}
如果可以,如果$_SERVER["HTTP_REFERER"] == mydomain.com
可以返回$_SERVER["HTTP_REFERER"]
,如何检查mydomain.com/page.php
?
答案 0 :(得分:5)
这不是PHP中需要解决的问题。如果有人可以像这样包含文件,那么服务器安全性已经搞砸了。 Web服务器的工作是防止提供原始PHP文件以及操作系统安全性和用户设置的工作,以防止未经授权的用户/进程包含文件。如果某人获得了足够的文件访问权限以便能够包含它,那么他们就有足够的权限来读取它,在这种情况下,您放入文件中的安全措施都不会被执行。
总结:不要担心。 :)
编辑:
这样的事情:
RewriteEngine On
RewriteRule ^connect.php /index.php [R]
这可能会因您的详细信息而变化,请查看有关此主题的myriad of questions。
答案 1 :(得分:1)
在我看来,你已经倒退了。
保护connect.php
的更简单方法是将其向上移动一个文件夹(在网络根目录之外)并使用include('../connect.php')
代替include('connect.php')
。做到这一点,你是安全的(至少connect.php
)。
HTTP_REFERER与安全性无关。检查它只会导致访问者在检查失败时收到Database connection error
而不是请求的页面。它每次都会失败:
不知怎的,我不相信这是你可能想要的东西。