保护ASP.NET和SSL中的Cookie

时间:2013-07-07 08:49:35

标签: c# asp.net session cookies

我们假设我已将ASP.NET网站部署为仅SSL。这是否意味着我不必担心使用以下链接中列出的方法明确加密cookie以保护它们?

How do I protect my site's session cookie?

How to secure the ASP.NET_SessionId cookie?

Encrypt cookies in ASP.NET

或者我应该在web.config文件中添加此代码吗?

<system.web>
  <httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>

注意

我没有明确地在我的代码中创建cookie。它们是在创建Sessions时生成的。

2 个答案:

答案 0 :(得分:2)

  

这是否意味着我不必担心使用以下链接中列出的方法明确加密cookie以保护它们?

这在很大程度上取决于您在这些cookie中存储的信息以及您是否关心用户是否能够操作它。例如,FormsAuthentication cookie始终是加密的,因为它们包含当前经过身份验证的用户名。如果它们未加密,则用户可以简单地伪造请求并将其用户名替换为例如admin。通过SSL发送cookie的事实绝对不是他的障碍。

另一方面,如果您要存储一些用户首选项,例如背景主题,您可能不会在意用户是否伪造了将其背景颜色从蓝色变为红色的请求,对吧?

总而言之:如果您不希望用户能够修改cookie的值,则应对其进行加密,无论是否通过SSL发送。

SSL用于防止中间人攻击,其中最终用户cookie值可能被中间人窃取。

答案 1 :(得分:1)

您不制作自定义Cookie,因此请查看asp.net创建的Cookie。

它会创建两个主要Cookie ,一个用于会话,另一个用于登录凭据

现在,从您的角度来看,您必须决定哪些信息至关重要且需要保密。

如果您确定所有用户信息都是敏感且需要保护,那么您可以确保所有网页的安全性,并在requireSSL="true"httpCookies上添加authentication | forms

如果您确定只有一些页面是敏感数据,那么这是必须登录的页面,这是必须是安全的页面ssl,然后您只使用requireSSL="true" {{1 }}

authentication | forms

现在请注意,如果您设置了<authentication mode="Forms"> <forms requireSSL="true" ... /> </authentication> ,那么cookie只会在ssl安全页面上被加入/加入。因此,您的所有网站都必须为requireSSL="true"

关于ssl和cookies:
Preparing my ASP.NET / MVC site to use SSL?
Can some hacker steal the cookie from a user and login with that name on a web site?