1

Web サイトから AJAX 呼び出しを処理するために使用する service.php クラスがあります。他の人が PHP CURL を使用してサービスにアクセスするのを防ぐために、私は通常、要求が mysite からのものであることを確認します。そうでない場合は、私のホームページにリダイレクトします。

if($_SERVER['HTTP_REFERER'] != "http://www.mysite.com"){
   header('location: http://www.mysite.com');
   exit;
}

PHPの聖書を読みました:

http://www.php.net/manual/en/reserved.variables.server.php

それ

「すべてのユーザー エージェントがこれを設定するわけではなく、機能として HTTP_REFERER を変更する機能を提供するユーザー エージェントもあります。つまり、本当に信頼できるものではありません。」

したがって、この方法が信頼できない場合、私の質問は、サービス ファイルへの要求が Web サイトからのものであることを確実に確認するにはどうすればよいかということです。

ご協力いただきありがとうございます。

4

2 に答える 2

1

簡単にはできないと思います。できることは、独自のファイルに常に何らかのパスフレーズを投稿させることです。いくつかのデータ (datetime?) を送信したとします。"datetime+secretstring"

secretstring を知っているのはあなただけなので、ハッシュを作成できるのはあなただけです。受信した日時を使用して 2 番目のファイルでハッシュを再作成し、送信されたハッシュが正しいかどうかを確認します。

他のサイトからのリクエストには、ハッシュと日時が含まれていないか、少なくとも正しいものではありません。

于 2011-01-08T10:31:57.417 に答える
1

小さなセッション Cookie を作成する必要があります。これには、ページ リクエストの時刻、リクエスタの IP、および時々変更される秘密の文字列 (つまり、1 時間ほど有効) が含まれます。Cookie は暗号化する必要があります。AJAX 呼び出しが行われると、Cookie を確認し、IP を比較し、秘密の文字列を確認して、それに応じて行動します。

しかし、実を言うと、これはハッカーの作業をより複雑にしますが、不可能ではありません。したがって、方程式に HTTPS を追加する必要があります。それでも、クライアントのコンピューターに優れたトロイの木馬が存在すると、誤った要求が可能になります。しかし、ほとんどのシナリオでは、上記の + HTTPS によって攻撃者を遠ざけることができます。

于 2011-01-08T10:50:21.613 に答える