使用Cookie是否会对asp.net中的应用程序安全构成威胁?或者我们仅将其用作保存用户统计信息和非重要信息的媒介?从我自己的博客
获得了在asp.net中使用cookie的一些细节答案 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所以要小心:不要存储太多信息。如果你存储了太多东西(比如一个大物体),你最终可能会破坏它们。