开源地址: https://github.com/Janusec/hashpwd
本库为《数据安全架构设计与实战》一书中推荐的身份认证实践:前端慢速加盐散列,用于在用户侧浏览器中延时300~500毫秒,并将原始口令转换为HASH值后再传递给后端。这种方式不收集用户原始口令,在用户侧执行前端慢速加盐散列后再传输,好处主要有:
可直接下载 https://github.com/Janusec/hashpwd/blob/master/dist/hashpwd.js 或 https://www.janusec.com/static/js/hashpwd.js ,并在网页中引用:
<script src="/path/to/hashpwd.js"></script>
该库提供了一个函数: GetHashPwd(username, password) 返回慢速加盐散列后的值。
只需要在Form标签中添加一个onsubmit函数,在提交前将原始口令转换为慢速加盐散列值即可。
<form name="loginForm" method="POST" onsubmit="loginForm.password.value=GetHashPwd(loginForm.username.value, loginForm.password.value)">
在Angular/Vue/React等前端应用中,可以参考本应用实现GetHashPwd函数:
import * as bcrypt from 'bcryptjs';
import * as cryptojs from 'crypto-js';
export function GetHashPwd(username, password) {
let salt = '$2a$12$' + String(cryptojs.SHA256('Janusec' + username + password)).substring(0,22);
let hashpwd = bcrypt.hashSync(password, salt);
return hashpwd;
}
本文地址: https://www.janusec.com/articles/opensource/1580195520.html (转载请注明出处)