クエリ文字列に含まれるものはすべて、エンドユーザーが表示および変更できるものです。つまり、サイトやアプリの動作に影響を与えるべきでないデータを表示またはアクセスするために変更する可能性があります。したがって、クエリ文字列を何も信頼しないで、使用する前にすべてをチェックすることはもちろんです。あなたがそれをチェックするとき、(それは無限のリストかもしれない)が間違っているものをチェックしないで、代わりにであるものをチェックしてください。チェックの1つでも失敗した場合は、クエリ文字列データを破棄するか、疑わしいものとして扱う必要があります。クエリ文字列でデータを暗号化またはエンコードしている場合、エンコードによってユーザの変更が無意味であったとしても、ユーザがそれを偽って信用しても意図しない副作用が残る可能性があります。
私がクエリ文字列に機密データを格納する方法の1つは、実行しないことです。 (セッション、キャッシュまたはデータベース内のテーブルに)機密データサーバー側を格納してから、クエリ文字列にランダムに生成されたキー(通常はGUID)を指定してURLを識別しますこのように:
http://myurl.com/myPage.aspx?secretKey=73FA4A5A85A44C75ABB5E323569628D3
GUIDをブルートフォースすることはかなり困難であるとGUIDの衝突の可能性は無限小であるため、クエリ文字列を持つエンドユーザー台無しが、その後、彼らは何を取得していない終わる場合。
このアプローチは、多くのものを保存する必要があり、クエリ文字列が長すぎるようになった場合でもうまく機能します。追跡する必要があるデータは、セッションまたはキャッシュに格納されたオブジェクトに保存できます。 GUIDがキーとして使用されます。
長さには制限があるため、長さも考慮する必要があります。 – Victor
URLは大文字と小文字が区別されません – IrishChieftain
クエリ文字列の代わりにmvc形式のURLルーティングを調べることをおすすめします。 – asawyer