2011-08-09 12 views
1

私はfile.phpを持っていますか?q = jsonデータを返すデータですが、私は他のウェブサイトにクエリをさせたくありません このファイルを通して私のデータベースと私は行う。私はこれを持っている:私のfile.phpを他のウェブサイトでは避けてください

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

あなたは、このセキュリティ上の問題を処理する方法に当接し任意のアイデアを持っていますか?どうもありがとうございました。

答えて

0

$_SERVER変数のHTTP_REFERERの部分を使用してみてください。

また、いくつかのmod_rewriteルールを使用して、ファイルのホットリンクを防ぐことができます。 See tutorial here

+4

Refererは決して信頼できる保護メカニズムではありませんでした。それはヘビ油です。 –

+0

@Eugene - 私の更新を参照してください – Neal

0

本当にセキュリティ上の問題である場合は、アクセスを制御する必要があります。これは、問題のURLにアクセスするための認証を要求することによって行うことができます。 HTTP authentication with PHPを使用してください。

いくつかの簡単なの予防を回避するために、あなたには、いくつかのブラウザによって送信されるHTTPリファラーヘッダーを確認することができます。

$_SERVER['HTTP_REFERER']Docs - にユーザーエージェントを参照するページのアドレス(もしあれば)現在のページ。これはユーザエージェントによって設定されます。すべてのユーザーエージェントでこれを設定するわけではなく、HTTP_REFERERを機能として変更する機能もあります。要するに、それは本当に信頼できるものではありません。

関連:How to protect download URLs to be stolen with PHP?

+0

しかし、誰もが単純にcURLを使ってrefererを送ることができます。 彼はあなたのドメインにリファラーを設定することができ、すべてのデータが出力されます! – ComFreek

+0

確かに、私はそれが回避するのは簡単だと書いたのですが、それは他のサイトからのjavascriptベースのリクエストに対する最初の小さなブロックに過ぎません。実際の保護ではありません。必要な場合は、制御を維持するために認証が必要です。 – hakre

1

だから、あなたは(おそらく他のウェブページ経由で)ユーザーがこのファイルにアクセスできるようにしたいが、競合他社がこのウェブページにアクセスしたくないですか?次に、競合他社と通常のユーザーとの違いを見いだすだけです。この問題には、明確な防弾対策はありません。

何らかの認証を実装してユーザーの要求番号を数えることで、ユーザーアクセスを制限できます。しかし、これは半分の措置です。

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"となります。

0

データにアクセスするのはWebの訪問者であると仮定すると、PHPセッション変数がページ(またはfile.phpへのリンクを含むページ)にアクセスするときにそれらを設定します。次に、file.phpにその変数の存在をチェックさせます。

; o)Cor

関連する問題