自分のドメインからのリクエストのみを処理するために投稿リクエストを制限したい場合、 $ _ SERVER ['HTTP_REFERER']を使用する以外の方法でリファラーを確認するにはどうすればよいですか?信頼されていませんか?
3 に答える
残念ながら、これは不可能です。リファラーを確認する唯一の方法は、ブラウザーがこの情報を提供しているかどうかです。これは、明らかに、読者に役立つように変更される可能性があります。
ただし、ユーザーがサイトにアクセスしたことを示す変数を保存するユーザーセッションまたはCookieを作成することはできます。その場合、そのセッション変数が定義されている場合にのみ、ユーザーに投稿の表示を許可できます。
別のオプションは、ユーザーのIPアドレスに基づいてリンクを生成し、ユーザーが特別に生成されたリンクをクリックした場合にのみアクセスを許可することです。まず、ユーザーのIPアドレスと一意のキーをデータベースに保存してから、すべての内部リンクで一意のIDを持つGET変数を使用できます。本物のIDなしでページを開くと、エラーメッセージが表示される可能性があります。
自分のドメインからのものである場合は、Cookieを設定するか、セッション変数を使用して、ユーザーをWebサイトにいるものとしてマークすることができます。次に、送信が送信され、ユーザーがその検証値を欠いている場合は、それを拒否できます(または、存在する場合は受け入れます)。
キャメロンの回答に加えて、クロスサイトリクエストフォージェリ
を防止するのと同じメカニズムを使用することもできます。つまり、ユーザーがサイトにアクセスしたことを示すセッション変数を設定するだけでなく、セッションデータの値と一致する必要があるキーをフォームに追加します。Zend_Form_Element_Hashなど、一部のフレームワークはそのサポートを提供します