如果我实现了使用HTTPS的SSL层,我知道我通过JSON表单和POST发送密码是安全的,但我有许多项目没有SSL证书,我仍然希望能够安全地发送密码。
如果我使用node-webkit直接从网页使用节点包并使用bcrypt-node来哈希密码字符串并将其发送到服务器,这将在比较之前再次哈希,这至少会阻止密码通过拦截HTTP请求盗窃?
因为即使攻击者截获HTTP请求并获得一次哈希的密码字符串,如果我可以假设所有登录尝试都必须通过网站完成,那么至少那个截获的字符串将没有用处,因为服务器会在比较之前再次哈希。
我不打算以任何方式成为HTTPS的完全替代品,但对于当前假设的这种情况,这是否足够安全?我的逻辑中有漏洞吗?
实施例)
假设原密码是:12345
并说客户端将其汇总为:12345 - > abcde,并发送到服务器。
然后服务器将其哈希为:abcde - > VWXYZ。
现在,攻击者知道“abcde”。但这不是没用的,因为即使攻击者将此字符串输入密码形式,
客户端将其哈希为:abcde - > xxxxx(别的)
并且服务器将其哈希为:xxxxx - > yyyyy(别的),
不等于“vwxyz”。
答案 0 :(得分:0)
您所描述的并不安全。虽然在客户端上散列密码可以防止发现原始密码,但是攻击者也可以使用该散列登录,因此它与知道密码一样好。