2009-08-29 19 views
2

當我連接到我的數據庫我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

回答

5

這不是PHP中要解決的問題。如果有人可以像這樣包含文件,那麼服務器安全性已經被破壞了。 Web服務器的工作是防止提供原始PHP文件以及OS安全性和用戶設置的工作,以防止未經授權的用戶/進程引入文件。如果有人獲得了足夠的文件訪問權限以便能夠包含它,則他們有足夠的權限來讀取它,在這種情況下,您將不會執行文件中的任何安全措施。

總結:不要擔心。 :)

編輯:

事情是這樣的:

RewriteEngine On 
RewriteRule ^connect.php /index.php [R] 

可能與您的個人資料強硬的變化,看看經過myriad of questions這個話題。

+0

好的。但無論如何,我希望直接進入mybomain.com/connect.php的用戶重定向到index.php。 – Johan

+0

最好的方法是將這些非用戶可訪問的庫文件放入其自己的目錄中,並使用'.htaccess'文件進行保護。 – deceze

+0

是的,我現在知道了,但不是在我開始這個項目時,現在已經太晚了。 – Johan

1

在我看來,你已經倒退了。

,以確保更簡單的方法你connect.php是向上移動,它一個文件夾(在網站根目錄外),並使用include('../connect.php')代替include('connect.php')。做到這一點,你是安全的(至少關於connect.php)。

HTTP_REFERER與安全無關。如果檢查失敗,檢查它只會導致訪問者收到Database connection error而不是請求的頁面。它會失敗每次:(包括谷歌和CO)

  1. 有人來到你的網站下面的其他網站上的鏈接
  2. 有人來到你的網站上點擊瀏覽器書籤
  3. 有人來你網址直接在地址欄中輸入地址

不知何故,我不相信這是你可能想要的東西。