JavaScript Math.random() 函数旨在返回一个介于 0 和 1 之间的浮点值。众所周知(或至少应该如此)输出在密码学上是不安全的。
使用伪随机数生成器 (PRNG) 是不安全的。 例如,过去曾有以下漏洞:
Why? COZ:
当程序在需要不可预测性的上下文中生成可预测的值时,攻击者可能会猜测将要生成的下一个值,并使用该猜测来冒充另一个用户或访问敏感信息。
由于 Math.random() 函数依赖于弱伪随机数生成器,因此此函数不应用于安全关键型应用程序或保护型敏感数据。 在这种情况下,应该使用强加密伪随机数生成器 (CSPRNG)。
如果您对以上任一问题的回答是肯定的,则存在风险。
不妨动动手在 Chrome 中测试以下代码以获取随机字节:
(function(){
var buf = new Uint8Array(1);
window.crypto.getRandomValues(buf);
alert(buf[0]);
})();
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。