PHPファイルへのすべてのアクセスをブロックする方法が必要ですが、xmlhttpリクエストを送信するJavaScriptファイルを許可する方法が必要です。そのjsファイルは私のサーバーでホストされており、機能するためにはサーバーにとどまる必要があります
私は次のものを持っています
header('Access-Control-Allow-Origin: *');
しかし、それは誰でもアクセスできるようにします。
うーん、これはありえないと思います。誰でもサーバーにリクエストを送信できますが、サーバーはリクエストに応答する相手と応答方法を選択します。ここで、JS のみがサーバーから応答されるようにする場合は、JS から HTTP リクエストを行うときにサーバーに通知する必要があります。これは、サーバーが JS を識別できることに基づいて、JavaScript ファイルの ID を公開しないと実行できません。しかし、誰でもあなたの JS を開いて読んで、どのようにリクエストを行っているかを理解し、同じものを使用することができます。
考えられる解決策の 1 つは、header('Access-Control-Allow-Origin: *') を使用して、すべてのユーザーがサーバーにリクエストを送信できるようにすることですが、サーバー側では、許可されたドメイン/オリジンのリストをサーバー上のデータベースに保持します。 Web サイトであなたの JS ファイルを使用する可能性がある、または使用する予定のサーバー。取得した AJAX リクエストに基づいて、リクエストの発信元が許可されているかどうかをデータベースから確認し、それに応じて応答します。これで、誰かが JS 以外の方法で PHP ファイルをリクエストしようとした場合、DB 内のデータに基づいて、リクエストを拒否するか、リクエストを受け入れることができます。許可されたユーザー/Web サイトがこれを行うと、故意に自分のデータをいじることになります。
これを試して:
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) <> 'xmlhttprequest')
{
die('direct access is not allowed');
}
また、 $_SERVER['HTTP_REFERER'] などのリファラーをいつでもチェックして、ドメインのスクリプトのみがアクセスできることを確認できます。