我目前正在使用ASP .Net MVC3构建电子商务网站。在结账过程结束时,我有一个显示订单摘要的视图,包括客户的联系方式(姓名,电子邮件,地址,联系人#等)。
我在查询字符串中使用GUID,用于从数据库中检索信息并将其显示在页面上(例如,www.site.com/Checkout/Complete?ID={GUID})。这在安全方面被认为是不好的做法吗?有人需要猜测GUID来访问任何客户信息,这似乎是不可能的。在显示信息之前,我是否应该进行额外的身份验证?
非常感谢
答案 0 :(得分:2)
GUID本身非常难以猜测或蛮力。 125个可能的GUID的功能有两个(不是2 ^ 128,因为有些位有fixed meaning)。
更大的担忧是
如果目的是允许某人链接回他们之前放置的订单,我会允许GUID预先填充用户名以方便,但仍然需要密码。
如果在浏览会话期间发生这种情况并且由于某种原因你需要一个GUID(你不能将这些信息存储在用户的会话中吗?),我倾向于为此目的创建一次性GUID,而不是公开了用户的唯一ID。将一次性GUID映射到服务器代码中用户的实际唯一ID(可以是真实GUID的盐渍哈希,也可以映射到映射表中)。
答案 1 :(得分:1)
应对用户进行身份验证,并且您的代码应检查当前登录用户是否可以访问该信息。