1

在使用属性(httpOnly 和 secure=true)在服务器上设置 Cookiee 时,这是否意味着它只会在服务器和客户端之间的通信期间受到保护,而不是在那之后?换句话说,如果该值最初是在 plainText 中 - 它是否也会与 plainText 一起存储在客户端(在使用 https 之后) - 使其不安全/易受攻击?

1)在发送之前是否需要始终加密密码(即使使用 https)?

2) httpCookiee (withsecure=true) 存储在哪里?这个存储访问是否受到保护?

4

3 回答 3

2

您可能不想存储密码。

您需要的是存储一些“用户已通过身份验证”标志。

毕竟,您应该了解“摘要访问身份验证”。存储散列数据总是有利的。

这个答案太短了,主要是因为这里有太多的可能性——还有太多的开放性问题。

处理回头客:

您可以管理(服务器端)会话数据库。在您只存储会话 ID 的 cookie 中。当用户进行身份验证时,您将其状态存储到服务器端数据库中:“登录”。当他注销时,您更改数据库状态:“注销”。

以任何方式处理返回用户与“存储密码”无关。例如,您可以通过外部身份验证服务(如 open-id、twitter、facebook 等)对用户进行身份验证,您只是通过某些会话 ID 或类似名称来存储他的状态。

浏览器通常可以存储用户名/密码,但这一直用户的责任。当用户只想记住他的密码时,您不应该以任何方式存储它。

为什么您希望通过在 cookie 中存储加密密码来使您的应用程序和安全机制复杂化——从任何角度来看,这不是正确的解决方案?

简单流程:

  • 用户访问您的站点时 - 您为他分配一个新的会话 ID 并将 SID 存储到 cookie 中
  • 当他登录时(通过https)-您存储在您的数据库中=“sessionID”->“登录”
  • 当他一周后返回时,您可以(服务器端)从 cookie 中接受他的会话 ID - 并且从 DB 中您可以获得他的“登录”状态,或者,您可以强制再次登录他(例如,因为到期)
  • 以上所有内容都没有任何风险以任何方式存储密码
于 2012-07-22T14:05:57.683 回答
0

1)我认为是的。因为即使带有安全标志,cookie 也会以纯文本形式存储在浏览器缓存中

2)它取决于浏览器和操作系统。对于 Mac 中的 Safari,您可以在 ~/Library/Cookies/Cookies.plist 中找到它。您可以看到带有 Secure 标志但以纯文本形式显示的 cookie。它可能受到保护,只有所有者才能看到,但在计算机的任何地方都有纯密码永远不是一个好主意

于 2012-07-22T14:10:19.887 回答
0

一旦将安全标志设置为 true,即使在浏览器关闭后,cookie 也会加密存储在客户端中。正如您所说,它是不安全/易受攻击的。

响应。1)密码可以在使用Javascript发送之前加密,但这没有多大意义,因为https正在为您进行加密。

响应。2) cookie 存储在浏览器文件夹中。任何人都可以打开文件夹并使用文本编辑器查看 cookie。

浏览器将为您处理密码。只需使用 <input type="password"> 并使用 SSL 就足够安全了。并且,不惜一切代价避免将密码存储在 cookie 中。

于 2012-07-22T14:14:25.213 回答