(URLのように).phpファイルへの外部アクセスをブロックし、.phpファイルがjquery postによって呼び出された場合に許可する方法はありますか?
ありがとう!Wouter0100
like in the URL
あなたがリクエストを防ぎたいと言っているからだと思いGET
ます。
これをスクリプトの先頭に配置して、URLを介して他のユーザーがアクセスするのを防ぐことができます。POST
そうすると、jQueryPOSTなどでのみ実行できるようになります。
<?PHP
if($_SERVER['REQUEST_METHOD']!="POST")
header('HTTP/1.0 401 Unauthorized');
exit;
?>
他のソースもPOST
フォームに含めることができることに注意してください。このメソッドは、GET
リクエストなどの他のメソッドを介したアクセスのみを防止します。つまり、アドレスバーにURLを入力します。
jquery postを使用してにアクセスできるようにする.php
ことは、外部アクセスを提供することと同じです。jquery postがphpファイルにアクセスできるようにする唯一の方法(そしてそれはあまり信頼できません)は$_SERVER['HTTP_REFERER']
、PHPコードの変数がjquerypostを送信したURLと同じであるかどうかを確認することです。
これを行う簡単な方法は、後で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();
}