0

POST リクエストの送信元を知りたいシステムを実装したいと考えています。

例: 送信ボタンのあるフォームがあります。ユーザーが送信ボタンをクリックすると、ページに移動します。しかし、投稿リクエストの送信元を知りたいです。

これは今までのコードです:

<form action="profile.php?id=<?php echo $user->id; ?>" method="post" name="formAdd"><input name="btnAddUser" type="submit" value="Add User"></form>

非表示の入力要素を使用する必要がありますか? それは良い方法ですか、それとも他の方法ですか?

4

5 に答える 5

3

まず第一に、信頼できる方法はありません。ユーザーは、必要に応じて要求を改ざんできます。

それに加えて、必要な種類の情報を取得する方法が 2 つあります。

  1. 経由で入手可能なリファラー$_SERVER['HTTP_REFERER']: リクエストの送信元の完全な URL が含まれていますが、拡張機能/ファイアウォールなどを使用する人もいます。リファラーをブロックまたはスプーフィングする
  2. あなたが提案したように、非表示のフォーム要素。ユーザーが送信されたデータを積極的に改ざんしたくない限り、これは常に機能します。それが好ましい方法です。
于 2012-02-18T11:41:00.440 に答える
1

からリクエストの$_SERVER['HTTP_REFERER']送信元が通知されます。

より詳しい情報:

于 2012-02-18T11:39:48.710 に答える
1

それは、必要な安全性と信頼性に大きく依存します。非表示のフォーム フィールドは機能しますが、処理スクリプトを指すすべてのフォームに追加する必要があることを意味します。誰かが望むなら、偽造するのも簡単です。または、$_SERVER['HTTP_REFERER'] を使用することもできます。これは常に信頼できるとは限りません - 使用しているブラウザーに依存すると思いますが、ほとんどの単純なシナリオでは十分なはずです。もう 1 つの方法は、セッションに何かを保存して、それを使用することです。これはすべてサーバー側であり、改ざんできないため、おそらく最も安全ですが、実装がおそらく最も困難です (ロケット科学ではありません)。

于 2012-02-18T11:42:13.967 に答える
0

value="name_of_referring_page"の場合は非表示フィールドを使用します。このようにして、ユーザーの設定、ファイアウォール、ブラウザーなどに関係なく、必要な情報を取得できます。

于 2012-03-04T02:12:02.860 に答える
0

ページをセッション変数 ($_SESSION["something"] = "page.php") に保存できます。これが最も安全な方法だと思います。これは、フォーム内の非表示の入力がユーザーによって変更される可能性があるためです。 $_SERVER['HTTP_REFERER'] は常に利用できるとは限りません。

于 2012-02-18T12:09:14.000 に答える