2012-03-08 5 views
3

現在、ASP .Net MVC3を使用してeコマースWebサイトを構築しています。チェックアウトプロセスの最後に、顧客の連絡先の詳細(氏名、メールアドレス、住所、連絡先#など)を含む注文の要約を表示するビューがあります。ユーザー情報を公開する際のセキュリティ

DBから情報を取得してページに表示するために使用されるクエリ文字列にGUIDを使用しています(例:www.site.com/Checkout/Complete?ID={GUID))。これはセキュリティ面で悪い習慣と考えられていますか?誰かが顧客情報にアクセスするためにGUIDを推測する必要があります。情報を表示する前にユーザーを認証するという追加の努力をする必要がありますか?

感謝

答えて

1

ユーザーは認証され、現在のログインユーザーがその情報にアクセスできるかどうかを確認する必要があります。

2

GUID自体は非常に推測しにくいか、力ずくです。可能なGUIDの数には2つの可能なGUID(2^128ではなく、一部のビットにはfixed meaningがあるため)が2つあります。

大きな懸念が

  • 多くのブラウザは無関係なページにブラウザの履歴を(hereまたはhereまたはhereを参照)を露出だろう。
  • ユーザーがチェックアウトページをブックマークすると、彼の特別なGUIDをブックマークから取得できます。
  • Man-in-the-middle攻撃(この時点でSSLを使用していると思われるので、問題は少ないでしょう)。

誰かが以前に行った注文に戻ってリンクすることを許可する場合は、便宜上、ユーザー名をあらかじめ入力することができますが、引き続きパスワードが必要です。

ブラウジングセッション中に何かの理由でGUIDが必要な場合(その情報をユーザーのセッションに保存できないのですか)、その目的のために1回限りのGUIDを作成する傾向がありますユーザーの一意のIDを公開するよりも1回限りのGUIDをサーバーコードのユーザーの実際の一意のID(実際のGUIDの塩漬けされたハッシュまたはマッピングテーブルにマップできる可能性があります)にマップします。

+0

ありがとうございます。いくつかの有用な情報は、非常に感謝します。 – Tas

関連する問題