2016-02-27 81 views
0

如果我实现了使用HTTPS的SSL层,我知道通过JSON格式和POST发送密码是安全的,但是我有一些项目没有有一个SSL证书,我仍然希望能够安全地发送密码。Node.js通过POST安全地发送密码

如果我使用node-webkit直接从网页使用节点包,并使用bcrypt-node对密码字符串进行哈希并将其发送给服务器,在比较之前它会再次哈希它,至少会阻止通过拦截HTTP请求窃取密码?

因为即使攻击者拦截HTTP请求并获取了经过一次散列的密码字符串,如果我可以假设所有登录尝试都必须通过网站完成,那么至少该截取的字符串将不起作用,因为服务器会在比较之前再次对其进行散列。

我不打算以任何方式完全替代HTTPS,但对于目前的假设情况,这是否足够安全?我的逻辑中有没有漏洞?

例)

比方说原来的密码是:12345

并说在客户端哈希到这一点:12345 - > ABCDE,然后发送给服务器。

然后服务器会将这个散列为:abcde - > vwxyz。

现在,攻击者知道“abcde”。但是,这不是无用的,因为即使攻击者进入该字符串转换成密码表单,

客户端将讨论解决这个分为:ABCDE - > XXXXX(别的)

,服务器将散列到这一点: xxxxx - > yyyyy(别的东西),

它不等于“vwxyz”。

回答

0

你描述的是不安全的。尽管在客户端上散列密码可防止发现原始密码,但攻击者也可以使用该散列进行登录,所以它与知道密码一样好。

+0

可以说原始密码是:12345 然后说客户端将它散列为:12345 - > abcde,并发送到服务器。 然后服务器将这个哈希到:abcde - > vwxyz。 现在,攻击者知道“abcde”。但是这并不是没用的,因为即使攻击者将这个字符串输入到密码表中,客户端也会将这个字符串散列为:abcde - > xxxxx(别的东西) ,服务器会将它们散列为:xxxxx - > yyyyy(something其他), 这不等于“vwxyz”。 – user3467433

+0

不要以为攻击者会使用你的表单。他们可以将哈希值直接发布到您的服务器上,并且您的服务器会将它们登录到其中。 –

+0

那么是否真的没有办法在没有HTTPS的情况下确保密码传输的安全? – user3467433