FORM POST の発信元が予期されるソースからのものであることを保証するための、プラットフォーム/言語に依存しないソリューションを見つけたいと考えています。つまり、同じ Web サイト内で Page1.aspx を Page2.php に投稿します。
特にここで私がやろうとしているのは、リクエストの偽造を防ぐことです。
アプリが生成したトークンを含む隠しフィールドをフォームで使用します。トークンをユーザー セッションに保存します。フォームが送信されると、アプリは非表示フィールドの値がユーザー セッションに保存されている値と同じであることを確認します。
同一の場合は、送信されたフォームが本来の場所から送信されていることがわかります。
古いスレッドですが、それでも役立つ可能性があります。
セッション情報が設定されていない場合(最良のオプション)、暗号化されたタイムスタンプを持つ非表示フィールドを含め、それを(復号化後)プロセス終了時の現在の時刻と比較して、比較的近いことを確認します。あなたが必要だと思うように最近。
SHA1Hash("some-secret" + Remote_IP + PerSessionSecret) となる隠しフィールドをフォームに含めることができます。
PerSessionSecret は、セッションの開始時に自動生成するものです。「some-secret」はグローバル シークレット値です。これは、ランダムに生成された PerSessionSecret が十分にランダムでないことが判明した場合に少し役立ちます。
次に、フォームの送信時に同じ計算を行うと、送信先と同じクライアントから送信された可能性が最も高いことがわかります。(もちろん、プロキシや NAT のように、単一のアドレスの背後に複数のクライアントがある場合、それらを確実に区別することはできません)。