【问题标题】:Protecting Cookies in ASP.NET and SSL在 ASP.NET 和 SSL 中保护 Cookie
【发布时间】:2013-07-04 20:07:17
【问题描述】:

假设我已将 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。它们是由于创建会话而生成的。

【问题讨论】:

  • 您好,马修先生,您得到了关于如何最终做到这一点的答案吗?我真的需要它。

标签: c# asp.net session cookies


【解决方案1】:

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

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

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

因此得出结论:如果您不希望用户能够修改 cookie 的值,则无论是否通过 SSL 发送,您都应该对其进行加密。

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    现在请注意,如果您设置了requireSSL="true",则仅在 ssl 安全页面上读取/接受 cookie。因此,您的所有网站都必须是 https://

    关于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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多