任何人都可以劫持(通过js)asp.net表单cookie并更改过期日期吗?
什么可以阻止他们抓住它并更改过期日期?即有效地让用户保持登录状态?
更新
.net框架是否构成身份验证。 cookie是依赖于cookie的到期日期还是将其包含在内?
答案 0 :(得分:5)
您可以采取一些措施来改善这种情况。
在web.config中,为cookie设置保护=“全部”:http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx。这将加密和验证,使得更难以破解客户端。
此外,Cookie可以将httpOnly设置为true。这告诉浏览器无法在javascript中操作cookie。
< forms> web.config中的元素也有超时设置(参见上面的链接)。微软的实施可能足够聪明,不仅仅依赖于cookie,但我不知道。
其他评论是正确的,客户端永远不应该被信任。因此,为了保密,您需要跟踪服务器上的“上次登录”并在一段时间后强制重新登录。
答案 1 :(得分:2)
Cookie由客户端存储,您不能相信他们不会更改。
Firefox的扩展程序允许您编辑Cookie,包括过期日期。如果你希望它们强制它们过期,你应该跟踪它们的服务器端并在那里过期。
答案 2 :(得分:1)
跟踪服务器端。
答案 3 :(得分:1)
通过JS(JavaScript),这是不可能的,至少在浏览器中不能遵守ASP.NET为Forms cookie设置的HttpOnly属性。
答案 4 :(得分:0)
我不确定javascript,但你可以使用Cookie编辑器添加Fire Fox
加密
在cookie中设置一个额外的日期标志
答案 5 :(得分:0)
如果要阻止此操作,请将过期日期哈希到cookie值中。然后,当您检索cookie时,如果散列的过期日期与明文过期日期不匹配,请丢弃cookie。