-1

(URLのように).phpファイルへの外部アクセスをブロックし、.phpファイルがjquery postによって呼び出された場合に許可する方法はありますか?

ありがとう!Wouter0100

4

3 に答える 3

2

like in the URLあなたがリクエストを防ぎたいと言っているからだと思いGETます。

これをスクリプトの先頭に配置して、URLを介して他のユーザーがアクセスするのを防ぐことができます。POSTそうすると、jQueryPOSTなどでのみ実行できるようになります。

<?PHP
if($_SERVER['REQUEST_METHOD']!="POST")
    header('HTTP/1.0 401 Unauthorized');
    exit;
?>

他のソースもPOSTフォームに含めることができることに注意してください。このメソッドは、GETリクエストなどの他のメソッドを介したアクセスのみを防止します。つまり、アドレスバーにURLを入力します。

于 2012-09-03T10:50:43.150 に答える
1

jquery postを使用してにアクセスできるようにする.phpことは、外部アクセスを提供することと同じです。jquery postがphpファイルにアクセスできるようにする唯一の方法(そしてそれはあまり信頼できません)は$_SERVER['HTTP_REFERER']、PHPコードの変数がjquerypostを送信したURLと同じであるかどうかを確認することです。

于 2012-09-03T10:52:52.807 に答える
1

これを行う簡単な方法は、後でPHPで読み取るjqueryでヘッダーを送信することです。これは決して真の保護ではありませんが、送信するはずのヘッダーを最初に検査せずにユーザーがリクエストを送信するのを防ぎます。

たとえば、jquery呼び出しでは次のようになります。

$.ajax({
    url: url,
    beforeSend: function(xhr) {
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    },
    success: function(data) {
    }
});

そしてあなたのPHPでは:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    header("HTTP/1.0 405 Method Not Allowed");
    exit();
}
于 2012-09-03T11:26:07.300 に答える