任何人都可以劫持(通过js)asp.net表单cookie并更改过期日期吗?

时间:2009-05-11 18:28:07

标签: asp.net forms-authentication

任何人都可以劫持(通过js)asp.net表单cookie并更改过期日期吗?

什么可以阻止他们抓住它并更改过期日期?即有效地让用户保持登录状态?

更新

.net框架是否构成身份验证。 cookie是依赖于cookie的到期日期还是将其包含在内?

6 个答案:

答案 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。