4

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

如何保护我网站的会话 cookie?

如何保护 ASP.NET_SessionId cookie?

在 ASP.NET 中加密 cookie

或者我应该在我的 web.config 文件中添加这个代码?

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

笔记

我没有在我的代码中明确创建 cookie。它们是由于创建会话而生成的。

4

2 回答 2

2

这是否意味着我不必担心使用以下链接中概述的方法显式加密 cookie 以保护它们?

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

另一方面,如果您要存储一些用户偏好,例如背景主题,您可能不会关心用户是否伪造了一个将背景颜色从蓝色更改为红色的请求,对吧?

所以总结一下:如果您不希望用户能够修改 cookie 的值,您应该对其进行加密,无论它是否通过 SSL 发送。

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

于 2013-07-07T09:37:33.817 回答
1

您不制作自定义 cookie,所以让我们看看 asp.net 会创建什么 cookie。

它创建了两个主要的 cookie,一个用于会话,一个用于登录凭据

现在,从您的角度来看,您必须决定哪些信息是关键的并且需要保护。

如果您已确定所有用户信息都是敏感信息并需要保护,那么您将确保所有页面的 ssl 安全,并requireSSL="true"在 thehttpCookies和 on 上 添加authentication | forms

如果您决定只有某些页面是敏感数据,那么这是必须登录的页面并且这是必须是安全 ssl 的页面,然后您使用requireSSL="true"onlyauthentication | forms

<authentication mode="Forms">
  <forms requireSSL="true" ... />
</authentication>

现在请注意,如果您已设置,requireSSL="true"则仅在 ssl 安全页面上读取/访问 cookie。所以你所有的网站必须是https://唯一的。

关于 ssl 和 cookie:
准备我的 ASP.NET / MVC 站点以使用 SSL?
一些黑客可以从用户那里窃取 cookie 并在网站上使用该名称登录吗?

于 2013-07-07T09:42:39.880 回答