在使用属性(httpOnly 和 secure=true)在服务器上设置 Cookiee 时,这是否意味着它只会在服务器和客户端之间的通信期间受到保护,而不是在那之后?换句话说,如果该值最初是在 plainText 中 - 它是否也会与 plainText 一起存储在客户端(在使用 https 之后) - 使其不安全/易受攻击?
1)在发送之前是否需要始终加密密码(即使使用 https)?
2) httpCookiee (withsecure=true) 存储在哪里?这个存储访问是否受到保护?
在使用属性(httpOnly 和 secure=true)在服务器上设置 Cookiee 时,这是否意味着它只会在服务器和客户端之间的通信期间受到保护,而不是在那之后?换句话说,如果该值最初是在 plainText 中 - 它是否也会与 plainText 一起存储在客户端(在使用 https 之后) - 使其不安全/易受攻击?
1)在发送之前是否需要始终加密密码(即使使用 https)?
2) httpCookiee (withsecure=true) 存储在哪里?这个存储访问是否受到保护?
您可能不想存储密码。
您需要的是存储一些“用户已通过身份验证”标志。
毕竟,您应该了解“摘要访问身份验证”。存储散列数据总是有利的。
这个答案太短了,主要是因为这里有太多的可能性——还有太多的开放性问题。
处理回头客:
您可以管理(服务器端)会话数据库。在您只存储会话 ID 的 cookie 中。当用户进行身份验证时,您将其状态存储到服务器端数据库中:“登录”。当他注销时,您更改数据库状态:“注销”。
以任何方式处理返回用户与“存储密码”无关。例如,您可以通过外部身份验证服务(如 open-id、twitter、facebook 等)对用户进行身份验证,您只是通过某些会话 ID 或类似名称来存储他的状态。
浏览器通常可以存储用户名/密码,但这一直是用户的责任。当用户只想记住他的密码时,您不应该以任何方式存储它。
为什么您希望通过在 cookie 中存储加密密码来使您的应用程序和安全机制复杂化——从任何角度来看,这不是正确的解决方案?
简单流程:
1)我认为是的。因为即使带有安全标志,cookie 也会以纯文本形式存储在浏览器缓存中
2)它取决于浏览器和操作系统。对于 Mac 中的 Safari,您可以在 ~/Library/Cookies/Cookies.plist 中找到它。您可以看到带有 Secure 标志但以纯文本形式显示的 cookie。它可能受到保护,只有所有者才能看到,但在计算机的任何地方都有纯密码永远不是一个好主意
一旦将安全标志设置为 true,即使在浏览器关闭后,cookie 也会加密存储在客户端中。正如您所说,它是不安全/易受攻击的。
响应。1)密码可以在使用Javascript发送之前加密,但这没有多大意义,因为https正在为您进行加密。
响应。2) cookie 存储在浏览器文件夹中。任何人都可以打开文件夹并使用文本编辑器查看 cookie。
浏览器将为您处理密码。只需使用 <input type="password"> 并使用 SSL 就足够安全了。并且,不惜一切代价避免将密码存储在 cookie 中。