私は最近、AJAXの呼び出しでアクセスされているファイルも、それを無効にするには、PHPでAJAXをサポートするスクリプトを大量にコード化し始めましたか?AJAXのみのアクセス
答えて
これを確実に防ぐことはできません。鍵は実際にセキュリティ問題としてこのファイルに直接アクセスしている人を考慮することではありません。これが可能であることを計画してください。あなたはもっと安全な場所にいます。
一部の人々は、この(または類似)のようなコードをお勧めかもしれません:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// more code here
}
しかし、問題の事実は、HTTPヘッダーが非常に簡単に詐称して、コードを固定する手段はありませんすることができるということです。忙しいサイトでの私のテストでは、私はこれらのヘッダーが実際には信頼できるものではないことに気付きました。
アクセスを直接許可しない方法はありません。クエリはいつでもあなたが思い付くあらゆる基準に合うように作成することができます。アプリケーション内
/* AJAX check */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//Do something here
}
使用するセッション:XmlHttpRequestのは、それはのようなものを用いて検出することができるヘッダーを追加し、サーバーを照会するために使用されている場合
。
編集:
私はそのためにUUIDを使用して、セッション中にあなたのサイトを登録します。
セッションで使用する同じ値のCookieを設定します。
この値も含むパラメータでAJAXリクエストを送信します。
セッション、cookie、およびパラメータの値を比較します。
他の人々は、これは不可能であり、その回答で示唆したように。これは、コンピュータセキュリティの柱の原則の1つで、クライアントを信頼することはできません。これがクライアントからのすべての入力を検証する理由です。
代わりに他のクライアントがサービスにアクセスするのをブロックする代わりに、守備的なWebサービスを書く時間を費やします。つまり、悪意のあるユーザーがビジネスロジックを介して注射やその他の攻撃を行うことができないようにしてください。例:すべての電子メールが有効で、人々が負のドルのためのアイテムを購入していないことを確認してください。
ああ、ウェブサービスが公開されているという事実は良いです!ユーザーに公開APIを提供していますが、非常にきれいです!たぶんあなたのコミュニティをロックアウトしようとする代わりに、あなたはそれを受け入れます - あなたのサービスとのインターフェース方法に関するドキュメンテーションを与え、より多くのクライアントを作ります。 iPhone SDKを購入してObjective Cの学習に時間を費やす代わりに、あなたのユーザーの一人がそうするかもしれません。
可能ですが、信頼性がありません。それ以外のすべての有効なポイント –
おそらく、ajaxリクエストとともにいくつかの安全な鍵を渡すような、いくつかのXSS防衛技術を使うべきでしょう。そして、ロードされたページと共に非同期クエリを行うjavascriptにキーを与えるだけです。この場合
<script type="text/javascript">
window.csrf_key = '<?php $user->getCsrf(); ?>';
</script>
あなたはアクションを呼び出すと健全性チェックを行うために記事を使用し、あなたは安全な鍵を続ける場合にのみ、人々は直接ファイルに要求を渡す心配する必要はありません。
- 1. AJAXスクリプトの読み込み
- 2. AJAXデータの読み込み
- 3. Ajax /動的チェックボックスへのアクセス
- 4. JSP - アクセスjQueryのAjaxデータ
- 5. Ajaxのアクセスは、idで
- 6. Ajax/JQueryデータベースへのアクセス/ mutex
- 7. UIダイアログ()のjquery $ .ajaxの読み込み
- 8. UIダイアログでの.ajaxの読み込み
- 9. Ajaxタイマーの読み込みの問題
- 10. AJAX経由のスクリプトタグの読み込み
- 11. Ajaxリクエストにのみ応答するPHPページのデータベースハンドルにアクセスするには?
- 12. FFのAjax ReadyState 1のみ?
- 13. jQueryのAJAXのみ2フィールド
- 14. ajax成功のJSONオブジェクトへのアクセス
- 15. Ajax関数内のVue.jsコンポーネントプロパティへのアクセス
- 16. Ajax UploadPanel内のFileUploader値へのアクセス
- 17. javascriptでのAjaxレスポンスへのアクセス
- 18. IE固有のAJAXアクセスの問題
- 19. AJAX部分ページの読み込み?
- 20. 個別の読み込みjquery ajax setInterval
- 21. 液体コードの読み込みコマンドAJAX
- 22. AJAXページの読み込みで[オブジェクトオブジェクト]
- 23. AJAXフォーム提出(Firefoxのみ)
- 24. .cfmテンプレートは、ajaxコールを介してのみアクセス可能にしますか?
- 25. URLのフォルダにアクセスすると、ajaxサイトのmod_rewriteを使用してルートインデックスページを読み込みます。
- 26. 多レベルAJAX配列へのアクセス
- 27. PowerShellの組み込みプロパティへのアクセス
- 28. C++:[]演算子の読み込みアクセスと書き込みアクセスのオーバーロード
- 29. jQuery:CDATAの読み込みとアクセス
- 30. AJAXの読み込みのためのグローバル変数の作成
Spot on。あるいは、パラメータ(たとえば '?ajax')を渡すこともできますが、これはさらに簡単にスプーフィングすることができます。 –