【发布时间】:2011-09-08 00:04:49
【问题描述】:
我将 ItemId 值存储在 cookie 中以跟踪用户当前选择的项目。这个 ItemId 不是敏感数据,我不在乎用户能不能看到它的值。大多数页面都需要访问此值,这就是为什么决定将值保存在 cookie 中而不是数据库中的原因。如果它在数据库中,我不会有这个问题。
问题是用户可以将该 cookie ItemId 修改为另一个用户 ItemId,然后他们可能能够对其他人的项目执行操作。除非我根据数据库验证 cookie 值以确保它对登录的用户有效。这意味着对 db 的打击违背了将值放入 cookie 的目的。
基本上我的问题是如何防止用户修改 cookie 或至少知道它已被修改?我知道 .NET 表单身份验证 cookie 存储用户 ID 和角色数据,所以他们显然有同样的问题..
我最初的想法是加密 cookie 中的值。我知道 cookie 仍然可能被劫持,但这至少可以防止篡改其值吗?
也许我应该改用 db 路线?
谢谢。
【问题讨论】:
标签: asp.net-mvc security authentication cookies encryption