Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript sha1安全吗?_Javascript_Sha1 - Fatal编程技术网

使用javascript sha1安全吗?

使用javascript sha1安全吗?,javascript,sha1,Javascript,Sha1,我需要做一个SHA1散列,唯一的选择是使用Javascript(因为我的客户端使用的是第三方产品) SHA1需要向支付网关传递一些信息。因此,需要将以下信息传递到SHA1以转换为哈希(用户名、密码、金额),然后传递到支付网关 我的问题是它安全吗?ie难道人们不能查看源代码并查看我正在散列的内容吗?建议这样做吗?还有别的办法吗 感谢无论使用何种哈希算法,通过浏览器端Javascript,您的用户将始终能够查看页面源代码并查看您正在哈希的内容 如果在服务器端进行哈希运算,则源文本不会显示给浏览器。“

我需要做一个SHA1散列,唯一的选择是使用Javascript(因为我的客户端使用的是第三方产品) SHA1需要向支付网关传递一些信息。因此,需要将以下信息传递到SHA1以转换为哈希(用户名、密码、金额),然后传递到支付网关

我的问题是它安全吗?ie难道人们不能查看源代码并查看我正在散列的内容吗?建议这样做吗?还有别的办法吗


感谢

无论使用何种哈希算法,通过浏览器端Javascript,您的用户将始终能够查看页面源代码并查看您正在哈希的内容

如果在服务器端进行哈希运算,则源文本不会显示给浏览器。“反转”SHA-1散列非常困难,但并非“不可能”——只要有足够的蛮力,至少可以找到散列冲突(另一个产生相同散列的字符串)

在大多数情况下,SHA-1被认为是足够安全的。然而,对于资金雄厚的主要对手来说,它并不安全——只要花几百万美元,就可以雇佣足够的云计算资源相对快速地破解SHA-1哈希,而且随着计算能力的提高,这将变得越来越便宜


如果涉及密码,您应该查看BCrypt。

不,不要这样做

密码散列应该使复制数据库的人无法使用登录信息。通过在客户端进行哈希运算,您就得到了数据库中需要在请求中发送的值。因此,攻击者只需禁用哈希并使用数据库值作为密码

密码哈希快速概述:

每个用户都有一个您的服务知道的密码。他们用它来登录。假设您将这些存储在纯文本中。如果有人复制你的数据库,那就太糟糕了。因此,您可以使用类似md5或sha1的算法散列每个密码。哈希不能用于重新创建密码,但您可以检查密码是否有效。问题解决了吗

不完全是。为哈希算法创建彩虹表非常简单。这样,您可以快速查找每个哈希的可能输入值。所以你是盐。这意味着每个用户都有一个随机字符串,该字符串在散列之前附加到密码,从而为每个用户创建一个唯一的散列函数。完美的解决方案


还是不太好。如果你的数据库被复制了,有了足够的计算能力,这是可以破解的。因此,最后一步是使用迭代。你不只是附加盐和散列,但是你得到了结果,再次附加盐和散列。你这样做了几百次。这样一来,攻击者暴力攻击的成本就会更高。这就是bcrypt所做的。随着时间的推移,计算能力会增加,因此您应该增加迭代次数。

这还不够。更新了问题,因此第三方产品将密码存储为纯文本?没有nonce或secret的SHA1哈希作为签名或安全方法完全没有意义,因此支付网关可能很糟糕。事实上,黑客攻击看起来很简单,如果还没有停业,他们就必须实施IP限制,在这种情况下,您根本无法发送客户端请求。至少可以这么说,整个故事令人担忧。你是将这三个值分别散列还是一起散列?还有哪一个是人们不允许看到的?这有几个问题:1。没有什么可以说(散列)密码在服务器端没有正确地散列和盐渍。你不知道这一点,所以这只是一个假设。2.用户在任何地方都没有提到哈希用于身份验证。这也是一种假设。问题是,“人们不能只查看源代码并查看我正在散列的内容吗”-问题没有询问服务器安全性或身份验证。是的,我可能回答了另一个问题:)