暴露用户信息时的安全性

时间:2012-03-08 05:16:50

标签: asp.net-mvc-3 security authentication

我目前正在使用ASP .Net MVC3构建电子商务网站。在结账过程结束时,我有一个显示订单摘要的视图,包括客户的联系方式(姓名,电子邮件,地址,联系人#等)。

我在查询字符串中使用GUID,用于从数据库中检索信息并将其显示在页面上(例如,www.site.com/Checkout/Complete?ID={GUID})。这在安全方面被认为是不好的做法吗?有人需要猜测GUID来访问任何客户信息,这似乎是不可能的。在显示信息之前,我是否应该进行额外的身份验证?

非常感谢

2 个答案:

答案 0 :(得分:2)

GUID本身非常难以猜测或蛮力。 125个可能的GUID的功能有两个(不是2 ^ 128,因为有些位有fixed meaning)。

更大的担忧是

  • 许多浏览器将浏览器历史记录(请参阅hereherehere)公开给不相关的网页。
  • 如果用户为结帐页面添加了书签,则可以从书签中检索他的特殊GUID。
  • 中间人攻击(虽然大概是你现在正在使用SSL,所以问题就少了。)

如果目的是允许某人链接回他们之前放置的订单,我会允许GUID预先填充用户名以方便,但仍然需要密码。

如果在浏览会话期间发生这种情况并且由于某种原因你需要一个GUID(你不能将这些信息存储在用户的会话中吗?),我倾向于为此目的创建一次性GUID,而不是公开了用户的唯一ID。将一次性GUID映射到服务器代码中用户的实际唯一ID(可以是真实GUID的盐渍哈希,也可以映射到映射表中)。

答案 1 :(得分:1)

应对用户进行身份验证,并且您的代码应检查当前登录用户是否可以访问该信息。