1

最近、JQueryを使用して入力フィールドにオートコンプリートを設定しました。そのソースを、サーバー上で公的にアクセス可能なPHPページに設定しました。

$(document).ready(function() {
    $("input#q").autocomplete({
        minLength: 3,
        delay: 500,
        autoFocus: true,
        source: "ac.php"
    });
});

ac.phpは、受信した入力をサニタイズした後、サーバーで実行されている検索サービスをポーリングします。

私が知りたいのは、オートコンプリートフォームを介してのみac.phpへのアクセスを強制する方法があるかどうかです。私はリファラーをチェックすることを考えていましたが、それはタンパーデータのようなツールでバイパスすることができます。

ヘルパーを公開したままにすることを心配する必要がありますか?

ありがとう

4

3 に答える 3

2

不可能です。実際、ajaxリクエストは、偽造可能な通常のHTTPリクエストです。

ヘルパーを公開したままにすることを心配する必要がありますか?

いいえ、しません。あなたがあなたのサイトに持っている他のリソース(ページ)と同じようにそれを扱ってください。

于 2012-09-13T23:57:34.743 に答える
1

何らかの形式の認証、おそらくoauth、ダイジェストなどがないわけではありません。個人的には気にしません。サーバー上で5分ごとに生成されたキーを使用し、それらを要求変数として送信してから、それらを一致させようとすることもできますが、これでも短期間のアクセスが可能になり、解決するよりも多くの問題が発生します。

于 2012-09-13T23:59:48.287 に答える
0

心配する必要があるかどうかは、状況によって異なります。リクエストがAjax呼び出しからのものかどうかを知る1つの方法はX-Requested-With、PHPスクリプトのヘッダーを確認することです。jQueryによってに設定されXMLHttpRequestます。たとえば、ここを見てください:http: //davidwalsh.name/detect-ajax

于 2012-09-14T00:02:53.903 に答える