【问题标题】:Encrypting pass in javascript with a key, then retrieve the original password (as securely as possible)用密钥加密javascript中的密码,然后检索原始密码(尽可能安全)
【发布时间】:2012-03-24 07:46:12
【问题描述】:

我想加密用户密码并将其保存在数据库中,所有这些都使用 javascript,然后再解密。我想使用密钥来加密/解密所有密码。我正在考虑将它们存储在 sqlite 数据库中。

您认为这样数据库在被盗时会很安全吗?我想这在很大程度上取决于算法和实现。

您能否指出任何具有此功能的库的正确方向,允许我加密/解密?

你能推荐我一个处理 sqlite db 的库吗?用 javscript 吗?

我通常会使用一些 webscripting 语言来完成所有这些操作,而无需解密通行证,但我需要使用 js 来执行此操作。我对这门语言还很陌生。因此,任何建议将不胜感激。

谢谢!

【问题讨论】:

  • 您希望在客户端进行加密/解密吗?这将是非常不安全的。为什么你仍然需要解密?通常你只计算一个哈希值,只比较哈希值,而这个计算必须在服务器端进行。
  • 是的,我知道这应该发生在服务器端,这就是为什么我说通常我会使用一些网络脚本语言来做到这一点。我想做的是一个 Firefox 附加组件,它可以将密码保存到站点,并且只需单击一个按钮即可自动登录这些站点。为了做到这一点,我需要以某种方式将它们保存在本地。如果有更好的方法,请告诉我!
  • 为什么要重新发明轮子? Firefoy 已经知道如何记住 web 端的密码。
  • 是的,我知道。这确实是一个很好的选择。但我希望我的插件能做更多的事情。无论如何,我正在重新发明轮子,我认为使用 Firefox 密码管理会更好。

标签: javascript sqlite passwords encryption


【解决方案1】:

客户端代码不应用于保护连接,因为 Javascript 代码本身是从不安全的连接中加载的,因此很容易被篡改。

只需加载您的脚本并通过 https 进行所有敏感通信,您应该会没事的。

【讨论】:

  • 在这种情况下,我认为我将从客户端加载 javascript 代码,因为它是一个 firefox 插件。插件只会自动完成一个带有预定义选项的表单,我想从数据库中检索通行证。
  • @eter:Firefox 不是已经包含密码管理功能了吗?你确定不能利用它吗?
  • 你是对的,它有。问题是我希望我的插件只需单击一个按钮,连续打开一堆站点并登录它们。 Firefox 通行证管理只是自动填充这些字段。无论如何,我想使用它会比实施一个新的更安全。但是想象一些设法攻击firefox,寻找pass management db并窃取它而不是一个更未知的附加组件是不合逻辑的。我知道,我通过默默无闻知道安全......
【解决方案2】:

如果你加密/解密任何东西,它应该在服务器上完成。

黑客可以查看 JS 的源代码以找出哈希算法,并假设他们使用数据包嗅探器或类似软件,将该算法与用户发送的数据进行比较。

对于您想要实现的目标,您可以使用 HTTPS 连接到服务器,并通过 xmlhttprequest 向服务器发送密码和接收认证通知。

我不知道有什么算法可以在客户端上做任何事情,可能是因为上面列出的原因。然而,有很多 PHP 散列算法。这个网站可能有用:http://phpsec.org/


编辑:(阅读您对 OP 的评论)Firefox 不是已经提供此功能了吗?在任何情况下,在本地机器上保存的密码都可以存储在本地机器上。重新访问页面时,您可以自动填写相关的密码字段。唯一的安全威胁是主机受到威胁。不过,我不知道任何代码示例。

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 2013-09-20
    • 2013-08-09
    • 2011-06-29
    • 2018-09-03
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多