私は自分のWebページにphpファイルを呼び出し、phpファイルにいくつかの値を渡すjavascriptを持っています。どうすれば私のWebページ上のjsからphpファイルへの呼び出しがあったのかを知ることができ、ブラウザのアドレスバーから直接php urlに入ることはできません。PHPのファイルがクライアント側でのみjsから呼び出されたかどうかをどのように知ることができますか?
答えて
$_SERVER['HTTP_X_REQUESTED_WITH']
がXMLHttpRequest
の場合は、チェックを使用します。そうすれば、人々がブラウザに直接URLを入力することを防ぎ、Ajaxリクエストを許可することができます。
if (! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// Do something useful
}
あなたは、ブラウザ/ JavaScriptライブラリがHTTP_X_REQUESTED_WITH
ヘッダを送信するかの説明についてはDo all browsers support PHP's $_SERVER['HTTP_X_REQUESTED_WITH']?を見たいかもしれません。 $ _SERVER
両方で
- 送信されているヘッダ(通常はAjax呼び出し追加の特別なヘッダ)
X-Requested-With: XMLHttpRequest
- 参照のうえURL:
次の情報を使用することができますしかし、ハッキングすることができます。
非常に安全なソリューションが必要な場合は、リクエストごとに固有のコードを作成し、JSからサーバーに送信する必要があります。このコードは、使用するたびに変更する必要があります。
できません。あなたが世界に公開するajaxに公開するものは何でも。さらに、そのページに入ることを望んでいる人は、ページ上で自分のJavaScriptを実行して、必要なHTTPヘッダーを偽装できます。これらはあなたがおそらくとにかくしたいと思う人々です。悪意のあるユーザーを制限する対策は使用しないでください。ただし、悪質なユーザーにはほとんど問題がありません。
しかし、私はHTTP_X_REQUESTED_WITH
について聞いたことがなく、予備の読書に基づいて使用するのは良い考えではありません。私は通常、POSTを使用して、_SERVER[REQUEST_METHOD]
がPOSTであることをチェックします。なぜなら、ほとんどの現代のブラウザは、URLバーによって行われたリクエストに対してGETを使用するからです(これは私の経験です)。再び、これは悪い人を守ることではなく、ただ事故を防ぐことです。
もう1つの措置は、確認済みの送信元から送信されたことを知らせるために、ページにフラグが送信されていることを確認することです。 Ajaxページの安全性に応じて、セッションなどを確認することもできます。一意的なハッシュ(例:md5)を作成し、DBにタイムスタンプを付けて保存するのがやや安全です。そのハッシュは、例えば3回までページを訪問できることを示します。ユーザーがあなたのajaxリンクをクリックすると、ハッシュが送信されます。ハッシュは消費されたとフラグされ、再利用することはできません。ハッシュは作成後もしばらく時間がかかるはずです(5分?それはあなた次第です)。
最後に、フレンドリーロボット(可能であればrobots.txt
、meta
など)がこのページを無視するようにしてください。これにより、検索エンジンを介して偶然に人に届かなくなります。
- 1. バッチスクリプトは、PowerShellから呼び出されたかどうかを知ることができますか?
- 2. どのメソッドを呼び出すのかをどのように知ることができますか?
- 3. アプリケーションでメソッドが呼び出されたかどうかを知ることはできますか?
- 4. 呼び出されたバットファイルをどのようにして呼び出すことができますか?
- 5. これらの通知はどのように呼び出されますか?
- 6. マクロがRustでどのように呼び出されたかを知ることができますか?呼び出し構文の
- 7. どのようなファイルがPHPファイルのために呼び出されたか知る方法
- 8. ユニットがsinonでテストされているときに、コントローラが呼び出されたことをどのように知ることができますか?
- 9. ASP.NETエンジンは、どのボタンがクライアント側でクリックされたかをどのように知っていますか?
- 10. どのように私はPHPからCプログラムの関数を呼び出すことができますか?
- 11. ビューが複数回呼び出されたかどうかはどのように知ることができますか?
- 12. どのような投稿がクライアントからリクエストされたのか、どのように知ることができますか?
- 13. アップロードされたファイルの数をPHPでどのように知ることができますか?
- 14. JavaScriptからどのようにPHP関数を呼び出すことができますか?
- 15. どのようにしてtplファイルの中でphp関数を呼び出すことができますか?
- 16. 現在のメソッドは、どのメソッドが呼び出されたかを知ることができますか?
- 17. チェーンコードが呼び出されたときにクライアントアプリケーションにどのように通知するのですか?
- 18. どのように変換することができます.wavファイルからクライアント側のjavascriptでbase64にurl?
- 19. ngrx:reducers関数が呼び出されたときにどのように呼び出されますか?
- 20. SQLAlchemyクエリをどのように呼び出すことができますか?
- 21. このスクリプトではどのようにOpenSSLが呼び出されますか?
- 22. ネストされたajax呼び出しをどのように同期させることができますか?
- 23. ファイルが自分の出力にどのようにコピーされたかをどのように知ることができますか?
- 24. ここにどのファイルが必要かをどのようにして知ることができますか?
- 25. コンストラクタはどのように呼び出すことができますか?
- 26. displayAd()メソッドはどのように呼び出すことができますか?
- 27. minitestでランタイム中にメソッドが呼び出されたことをどのようにテストできますか?
- 28. $ state.reload()がAngular JSで呼び出された後、どのようにコードを実行できますか?
- 29. PHP - どのループが高速であるかをどのように知ることができますか?
- 30. どのようにピボットされたプロシージャをSQLクエリとして呼び出すことができますか?
これはヘッダーであり、最新のブラウザでは簡単に偽装できます。したがって、実際にリクエストの起点を知る方法はありません。そしてどうしたらいい?クライアントは、サーバーから隔離されたシステムです。 – hakre