当存储在客户端中时,通过https的plainText密码是否仍然安全。

时间:2012-07-22 13:52:26

标签: cookies https password-encryption cookiestore

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

1)密码需要始终加密才能发送(即使使用https)?

2)httpCookiee(带有secure = true)存储在哪里?这个存储访问是受保护的吗?

3 个答案:

答案 0 :(得分:2)

您可能不希望存储密码。

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

毕竟,您应该了解“摘要访问验证”。存储散列数据总是加号。

这个答案太短了,主要是因为这里有太多的可能性 - 以及太多未解决的问题。

处理回归用户:

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

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

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

为什么您希望将您的应用和安全机制与在Cookie中存储加密密码相混淆 - 从任何角度来看,什么都不是正确的解决方案?

简单流程:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

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