3

私は ajax 呼び出しに使用するコントローラーを 1 つ持っているので、jQuery には次のようなものがあります。

$.ajax({ 
  type: 'POST',
  url: '<?php echo base_url().'ajax/post_message'; ?>',
  data: { message: msg }
}).done(function(data) { 
    // handling callback here               
});

ここで ajax/post_message は問題なく動作していますが、URL から直接アクセスすることもできます。

これを防ぐにはどうすればよいですか? ajaxファイルを別の場所に配置する必要がありますか? もしそうなら、どのURLを使用してアクセスできますか

4

5 に答える 5

2

Ajax で使用する場合は、ブラウザーがアクセスできる必要があります。

ブラウザがアクセスできる必要がある場合、URI をシークレットにすることはできません。

その使用を特定の人に制限したい場合は、認証と承認のみを使用できます (ログインしているユーザーのみがアクセスできます)。

(サードパーティのサイトが API を直接利用するのを難しくするために、IP アドレスに基づくレート制限を検討することもできます)

于 2012-10-25T14:11:58.700 に答える
1

WordPressのように、一度だけ使用されるシステムを実装することができます。ほとんどの場合、サーバーはクライアントに番号を割り当てます。クライアントがリクエストをサーバーに送り返すと、ナンスも送信されます。サーバーは、受信したナンスを以前に割り当てたナンスと照合します。ナンスが有効である場合、サーバーは要求を処理し、ナンスを破棄します(一度使用され、無効になったため)。サーバーに送信されたナンスが無効であるか、送信されていない場合、サーバーは要求を処理しません。

あなたはこのナンスプロセスをあなたの好みに拡張することができます、多分ナンスは特定の期間だけ有効です...誰が知っていますか。

WordPressでの使用方法を説明するいくつかのリソース:http: //markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/

http://www.prelovac.com/vladimir/improving-security-in-wordpress-plugins-using-nonces

http://www.techytalk.info/securing-your-wordpress-plugin-ajax-calls-using-nonces/

于 2012-10-25T14:34:38.830 に答える
1

いいえ、技術的には Ajax クエリは単純な HTTP get/post リクエストにすぎないためです

于 2012-10-25T14:12:17.940 に答える
0

ajax で URL を非表示にすることはできないため、セッションを使用して、誰が ajax URL にアクセスできるかを制御してみてください。

于 2012-10-25T14:16:26.047 に答える
0

true/false を返す is_ajax_request() を使用できます

http://codeigniter.com/user_guide/libraries/input.html

于 2012-10-25T15:28:04.843 に答える