安全包括数据库登录变量

时间:2009-08-29 08:08:34

标签: php

当我连接到我的数据库时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

2 个答案:

答案 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而不是请求的页面。它每次都会失败:

  1. 有人通过其他网站(包括Google和co。)
  2. 上的链接访问了您的网站
  3. 有人点击浏览器书签来到您的网站
  4. 有人来到您的网站,直接在地址栏中输入地址
  5. 不知怎的,我不相信这是你可能想要的东西。