質問
ポストバックではなく、GETでURL Request.Querystringsのみを解析する必要がありますか?
if(!IsPostBack)
{
Viewstate["magic_number"] = Parse(Request.Query);
}
ユーザーは、後続のポストバックのリクエストでURLを変更することを期待できませんか、またはできますか?
質問の動機-ポストバックを行うJavaScriptスニペットを制御していないため、ブラックボックスのようなものです。
解決
URLは変更されることはありません 。ただし、各ポストバックはページクラスの新しいインスタンスであることを忘れないでください。したがって、最初のビューのどこかに結果を保存しなかった場合は、次のビューで再度実行する準備をする必要があります。この場合、ViewStateに保存したので、問題ないはずです。
ただし、そうでないと疑われるようになった行動を観察していない限り、質問をすることはないでしょう。それで、これが壊れる原因を考えてみましょう:
- 結果を保存したクライアントでViewStateを変更することは可能です(些細なことではなく、間違いなくお勧めしません)。
- 最初のページビューの前にポストバックを偽造できます。
- javascriptを使用して、投稿されたURLを変更できます。
ただし、これらすべてのことについて、あなたがそれを行うための何かを書いたかどうかは確かにわかるでしょう。
他のヒント
あなたの仮定は正しいです。URLはその後のポストバックで変更されることはないので、GETでのみクエリ文字列を解析する必要があります。これはページが最初にロードされるときに発生します。
通常、ポストバックのURLは変更されません。
もちろん、FireBugのようなツールを使用して、ポストバックの前にformタグのURLを編集することもできますが、おそらくユーザーが注入した値ではなく、元の値が必要になるでしょう。
他の人が指摘しているように、URLは変更されません。もちろん、私たちが完璧な世界に住んでいれば、あなたは決して電子メールスパムを受け取らず、誰もあなたのウェブサイトに対して悪意のあることをしようとはしません。
現実の世界では、悪意のあるユーザーがWebサイトをハイジャックしようとし、インジェクション攻撃
ポストバックで受信したデータが有効であると仮定してはならない 。