2011-02-01 14 views
9

私は、ASP.NETでQueryStringを使用していて実際には何も見つけていないときのベストプラクティスガイダンスを探しています。ASP.NETでクエリ文字列を使用する場合のベストプラクティス?

私は便利な最適化の記事を発見した:http://dotnetperls.com/querystring

をしかし、私は次の質問に答えることで、より興味を持っています:

  • ケースルールを?すべて小文字ですか?パスカル事件?キャメルケース?
    • 私の個人的な好みはすべて小文字ですが、一貫性が最も重要です。
  • パラメータ名に特殊文字を使用しないでください。
  • セキュリティのためにパラメータと値を難読化する必要がありますか?

等...

任意の詳細なガイドラインをいただければ幸いです!

+3

長さには制限があるため、長さも考慮する必要があります。 – Victor

+1

URLは大文字と小文字が区別されません – IrishChieftain

+0

クエリ文字列の代わりにmvc形式のURLルーティングを調べることをおすすめします。 – asawyer

答えて

10

クエリ文字列に含まれるものはすべて、エンドユーザーが表示および変更できるものです。つまり、サイトやアプリの動作に影響を与えるべきでないデータを表示またはアクセスするために変更する可能性があります。したがって、クエリ文字列を何も信頼しないで、使用する前にすべてをチェックすることはもちろんです。あなたがそれをチェックするとき、(それは無限のリストかもしれない)が間違っているものをチェックしないで、代わりにであるものをチェックしてください。チェックの1つでも失敗した場合は、クエリ文字列データを破棄するか、疑わしいものとして扱う必要があります。クエリ文字列でデータを暗号化またはエンコードしている場合、エンコードによってユーザの変更が無意味であったとしても、ユーザがそれを偽って信用しても意図しない副作用が残る可能性があります。

私がクエリ文字列に機密データを格納する方法の1つは、実行しないことです。 (セッション、キャッシュまたはデータベース内のテーブルに)機密データサーバー側を格納してから、クエリ文字列にランダムに生成されたキー(通常はGUID)を指定してURLを識別しますこのように:

http://myurl.com/myPage.aspx?secretKey=73FA4A5A85A44C75ABB5E323569628D3 

GUIDをブルートフォースすることはかなり困難であるとGUIDの衝突の可能性は無限小であるため、クエリ文字列を持つエンドユーザー台無しが、その後、彼らは何を取得していない終わる場合。

このアプローチは、多くのものを保存する必要があり、クエリ文字列が長すぎるようになった場合でもうまく機能します。追跡する必要があるデータは、セッションまたはキャッシュに格納されたオブジェクトに保存できます。 GUIDがキーとして使用されます。

4

私の5セント:あなたは

http://myurl.com/myPage.aspx?secretKey=73FA4A5A85A44C75ABB5E323569628D3 

のような他の人々によって呼び出すことができるページを、持っている場合、彼らは秘密鍵でKのスペルを間違えたときに

が、あなたは彼らが問題を経験したくありませんそれを大文字にしないことによって。

だからここに私のルール:

  1. はそれをすべて小文字を行います。大文字は使用しないでください。ドイツ語のdoubleなど、対応する大文字の小文字がいくつかあるためです。

  2. QueryString["mykey"].ToLower().Equals("73FA4A5A85A44C75ABB5E323569628D3") は、QueryString["mykey"]がNULL(例外NULL参照)になる可能性があるため、悪い考えです。

  3. string.IsNullOrEmpty() if else if object.equals(querykey, "comparison")のような複雑なものはありません。単にStringComparer.OrdinalIgnoreCase.Equals(key, "73FA4A5A85A44C75ABB5E323569628D3")を使用してください。これはNULLで動作し、falseを返します。追加のnull/emtpyチェックは必要ありません。

+0

私が間違っていない限り、URLはIISでは大文字と小文字が区別されません。 – Ethan

+0

@Ethan:はい、Linuxと異なり、URLはWindowsでは大文字と小文字が区別されません。しかし、URLパラメータのあなた自身の比較はです。 –