使用cookie会对asp.net中的应用程序安全性构成威胁吗?

时间:2009-12-28 10:04:50

标签: asp.net cookies

使用Cookie是否会对asp.net中的应用程序安全构成威胁?或者我们仅将其用作保存用户统计信息和非重要信息的媒介?从我自己的博客

获得了在asp.net中使用cookie的一些细节

4 个答案:

答案 0 :(得分:3)

IMO cookie是某些情况下的最佳选择之一。例如,存储用户选择的语言。您还可以将cookie中的一些敏感信息缓存为用户的角色,如ASP.NET角色管理器。但是你应该毫无疑问地加密它,你也应该设置HttpCookie.HttpOnly = true以防止javascript访问cookie。不要担心在不同的浏览器中支持cookie,大小是首要的(浏览器每个cookie只支持4096bytes)。 Cookie是带宽杀手,在每个请求和响应中发送和接收。因此,你应该在avarage中使用它。您可以按如下方式检查客户端浏览器是否支持cookie。

if (Request.Browser.Cookies) { // The browser supports cookie }

要了解有关Cookie的更多信息,请访问here

答案 1 :(得分:1)

使用Cookie不会对应用程序构成任何威胁。这是您使用它们的方式以及您存储的可能存在问题的信息。例如,您必须避免在cookie中存储敏感信息。如果用于身份验证,则应始终通过安全通道进行传输。

答案 2 :(得分:1)

这取决于你如何使用它们。 Cookie应始终被视为不受信任的输入,因为它们可以伪造,编辑或删除。我见过一个cookie包含admin=true之类的应用程序,这显然是一件非常糟糕的事情。如果你只是丢掉一些guid并使用它来跟踪某人,但是如果你的结果是准确的那么不关心那么这就没事了。

如果您想确保cookie是半有效的,那么您必须向cookie本身添加类似HMAC的内容,这就是ASP.NET使用窗体身份验证cookie(以及ViewState字段)所做的事情。当然,这不会阻止用户删除cookie或从另一个用户复制有效的cookie。

答案 3 :(得分:1)

只要您不在cookie中存储关键信息(如用户密码),您就可以了。

小心那样的场景:

  • 您将用户的ID存储在Cookie中

  • 您针对此ID进行测试,看看他是否已登录

  • 用户在cookie中手动更改ID(易于操作)

  • 用户可以访问其他帐户

我的观点是,您必须记住,用户可以访问cookie并进行更改,因此请不要存储您不希望他看到的任何内容。

最后,Cookie通常有limited size所以要小心:不要存储太多信息。如果你存储了太多东西(比如一个大物体),你最终可能会破坏它们。