私のサイトはこんな感じで、ユーザーがそれを開いてindex.phpを実行すると、index.phpにはindex.phpと同じサーバーディレクトリにある他のphpスクリプトへのajax呼び出しがたくさんあります。現在は投稿を使用していますが、ユーザーがこれらの他のスクリプトのアドレスを知るようになると (右クリック ---> ページのソースを表示するなど)、ブラウザーでそれらのスクリプトを実行できるため、不都合が生じる可能性があります (たとえば、空白が発生することがあります)。データベースに挿入されるエントリ、単なる例)。では、ブラウザからのこれらのスクリプトのphp実行を無効にするにはどうすればよいですか?
1431 次
3 に答える
2
少なくとも確実にはできません (たとえば、JavaScript を使用して追加の要求ヘッダーを追加することはできますが、ユーザーはそれらの要求を観察してヘッダー自体を追加できます)。
代わりに、送信されたデータが正常であることを確認してください。空白のエントリを追加する送信が来た場合は、エラー メッセージを返します。
于 2013-06-11T12:12:27.407 に答える
-1
Ajax 応答の場合は、php スクリプトをチェックインする必要があります
/* AJAX check */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
echo 'call from ajax'; //here you have call request by ajax
}
else
{
die("You shouldn't be here");
}
/* not ajax, do more.... *
よく知られている JS ライブラリのほとんどは、このヘッダーを使用しています。ライブラリを使用しない場合は、このヘッダーを独自に設定できます。
var req = new XMLHttpRequest();
req.setRequestHeader("HTTP_X_REQUESTED_WITH", "xmlhttprequest");
これらのヘッダーは、攻撃者がデータを改ざんしたときに設定できますが、ブラウザー経由でページにアクセスしたい一般の人には、「ここにいるべきではありません」というメッセージが表示されます。
于 2013-06-11T12:13:10.043 に答える
-2
AJAX リクエストを検出するために使用するものは次のとおりです。
function isAjax()
{
/* AJAX check */
return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
}
これは検出を保証するものではなく、意図的な攻撃者ではなく、見当違いのユーザーを失速させるのに役立つだけであることに注意してください。
于 2013-06-11T12:13:19.803 に答える