2012-03-12 7 views
1

は、私がなどsearch_data.phpsearch_user_data.phpJqueryデータを処理する機密性の高いPHPファイルを保護する方法は?私のウェブサイト上で

問題は、これらのファイルのすべての私のパブリックのHTMLフォルダ内に配置されているようなページへの$.get要求を行うsearch.phpページを持っています。

誰かがwww.mysite.com/search_user_data.phpにブラウズできたとしても、処理されたすべてのデータは適切にエスケープされ、処理されますが、専門的なレベルでは、このファイルを公開することさえできません。

私はWebルートに機密ファイルを移動しようとしましたが、Jqueryが$.getリクエストを作成してURLの変数を渡しているため、これは機能しません。

これらの脆弱なページをしっかりと保護する方法を知っている人はいますか?

+0

@zerkmsしたがって、存在するすべてのWebページのすべてのファイルはプライバシーを全く持たないはずです。 – Norse

+2

PHPは公開されていないため、 "サーバ側言語"です。実行され、結果が出力されます。 – Shea

+0

@andrewjacksonですが、私は 'search_data.php?id = 394&pass = 493202'のようなことをして誰かにURLで遊ぶチャンスを与えない方がいいです。それは合理的ではないですか? – Norse

答えて

2

あなたの記述は正常です。

あなたはwwwディレクトリに到達可能なPHPファイルを持っていますので、apache(またはお気に入りのウェブサーバー)がそれらを読み込んで処理することができます。 あなたがそれらを移動すると、あなたはそれらにもう届くことができないので、そのような種類の本当のオプションはありません。

AJAX用のすべてのPHPファイルは通常のphpファイルですが、他のプロジェクトにもphpファイルが含まれている可能性があります。右 ?彼らは、あなたのサーバー上のどのスクリプトよりも危険にさらされることはありません。

「きれいに」プログラムするようにしてください。あなたのPHP関数を書くとき、悪い要求を書いた後ではなく、考えてください。 既に行ったように、データベースまたは機密機能に影響を与える入力をすべて正しく引用してください。

悪意のあるユーザーを検出すると、受信した値にセキュリティチェックを追加し、自動メールを作成できます。そのような場合には警告が表示される可能性があります。 しかし、いくつかの企業がウェブサイトで自動的にバグをスキャンするため、定期的に警告が表示されます。そのようなスキャンについても警告が表示されます。

あなたのコードを可能な限り「安全」なものとして書く上で、あなたのコードにリファラーチェックを追加することができます。つまり、アクセスしたときにあなたのウェブサイトがリファラーとして与えられた場合にのみPHPファイルが反応します。それはそこの子供の80%をブロックするのに十分です。 しかし、欠点:一部のインターネットユーザーはリファラーを一切送信せず、一部のプロキシはそれをフィルタリングします。(私は個人的にそれらを無視し、とにかくその上半分(WWW)インターネット休憩)

保護のもう一つの層はhtaccessのことで追加することができ

、あなたがPHP内のほとんどを行うことができますが、それはまだあなたのために参考になります。http://httpd.apache.org/docs/2.0/howto/htaccess.html

+0

私はおそらく追加する必要があります:私はajax要求を作成し、ユーザーが私のサーバー上のアカウントを持っていると私は通常、パスワードと(そしていくつかの塩)のユーザーIDとmd5hashを渡します。これは、Ajaxリクエストが法的ユーザから発信されたかどうかを簡単に確認できたことです。 – John

2

あなたのページが読み込まれるたびに、$ _SESSION ['uid']に格納することができます。あなたはやってJavaScriptにこのUIDを与える:それは大丈夫だ場合

if($_GET['uid'] != $_SESSION['uid']) // Stop with an error message or send a forbidden header. 

は、何が必要かの操作を行います。

var uid = <?php print $_SESSION['uid']; ?>; 

は、次に、あなたの$ _SESSIONと比較し、あなたのGETリクエストでそれを渡します。

誰かがsearch.phpをリクエストして現在のuidを取得してから、他のページをリクエストできるので、完璧ではありませんが、可能な限り最良の解決策である可能性があります。

+0

これはとても役に立ちます – Norse

+0

このメソッドを '$ _POST'で代わりに使用した方が安全でしょうか? – Norse

+0

実際にはありません。それは初心者にとっては難しいだろうが、他の人にとっては非常にシンプルである。 – Alytrem

関連する問題