2009-08-29 6 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で解決するための問題ではありません。もし誰かがそのようなファイルを含めることができれば、サーバーのセキュリティはすでに台無しになっています。生のPHPファイルの提供と、OSのセキュリティとユーザ設定の仕事を妨げて、許可されていないユーザ/プロセスによるファイルの包含を防ぐことは、Webサーバの仕事です。誰かがファイルにアクセスできるだけの十分なアクセス権を持っていれば、ファイルを読むだけの十分なアクセス権があります。その場合、ファイルに入れたセキュリティー対策は実行されません。

要約:心配する必要はありません。 :)

EDIT:このような

何か:

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を保護する簡単な方法は、1つ上のフォルダ(Webルートの外側)に移動し、include('connect.php')ではなくinclude('../connect.php')を使用することです。それだけであなたは安全です(少なくともconnect.phpに関して)。

HTTP_REFERERはセキュリティとは関係ありません。チェックが失敗した場合、訪問者は要求されたページの代わりにDatabase connection errorを受け取るだけです。それは毎回失敗します。

  1. 誰かが別のサイトにリンク以下のサイトに来る
  2. 誰かが
  3. 誰かがあなたに来るブックマークブラウザをクリックあなたのサイトに来る(Googleとの共同を含みます。)アドレスバーにアドレスを直接入力するサイト

どういうわけか私はあなたが望むかもしれないと信じています。

関連する問題