Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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 检查常用密码的最佳方法?(最佳实践和性能方面) 我目前正在一个**Node.js**网站上工作/学习,该网站将拥有来自不同国家的用户,在实施用户注册的同时,我想尝试保护自己和用户免受攻击,但到目前为止,我所做的似乎有些过分:_Javascript_Html_Node.js_Security_Passwords - Fatal编程技术网

Javascript 检查常用密码的最佳方法?(最佳实践和性能方面) 我目前正在一个**Node.js**网站上工作/学习,该网站将拥有来自不同国家的用户,在实施用户注册的同时,我想尝试保护自己和用户免受攻击,但到目前为止,我所做的似乎有些过分:

Javascript 检查常用密码的最佳方法?(最佳实践和性能方面) 我目前正在一个**Node.js**网站上工作/学习,该网站将拥有来自不同国家的用户,在实施用户注册的同时,我想尝试保护自己和用户免受攻击,但到目前为止,我所做的似乎有些过分:,javascript,html,node.js,security,passwords,Javascript,Html,Node.js,Security,Passwords,我从以下来源获取密码:(世界范围的),获取每种语言的较低版本(将它们重新整合到一个文件中),并删除重复的条目。总字数约为2.8M,导致“超过最大调用堆栈大小” 显然,这似乎不是解决问题的方法,我知道它们是可以为我解决问题的中间件/服务,我不想回避它们,我只是不知道哪一个是“全球范围内的”,并且不会牺牲太多性能 (有关我当前用于表单验证的信息) 编辑:因为我的代码被询问,这里是主要问题(imo): 让用户输入密码; fs.promises.readFile(“static/commonPasswo

我从以下来源获取密码:(世界范围的),获取每种语言的较低版本(将它们重新整合到一个文件中),并删除重复的条目。总字数约为2.8M,导致“超过最大调用堆栈大小”

显然,这似乎不是解决问题的方法,我知道它们是可以为我解决问题的中间件/服务,我不想回避它们,我只是不知道哪一个是“全球范围内的”,并且不会牺牲太多性能
(有关我当前用于表单验证的信息)

编辑:因为我的代码被询问,这里是主要问题(imo):

让用户输入密码;
fs.promises.readFile(“static/commonPasswords.txt”)
。然后((结果)=>{
commonPasswords=result.toString().split(/\r?\n/);
})
.catch(err=>console.log(“设置常用密码时出错:”,err));
const validateUserRegistration=(用户)=>{
如果(commonPasswords.length>0){
const userRegistration=Joi.object({
用户名:Joi.string().min(3).max(20).required(),
电子邮件:Joi.string().email(),
密码:Joi.string().min(8).max(64).not(…commonPasswords),
confirmPassword:Joi.ref('password')
});
返回userRegistration.validate(用户);
}否则{
犯错误;
}
};
EDIT2:我结束了“手动”检查我的密码,顺序是(并且只有在上一次成功时):

  • 使用(感谢)
  • “手动”检查密码是否在我的commonPasswords列表中(现在已设置)
  • 正在调用UserRegistration.validate(用户)

  • 我建议不要检查密码的内容,而要注意加强密码长度。注意密码熵。使用30位熵密码,暴力攻击需要很长时间才能找到用户的密码。如果安全性是一个问题,那么就更关注防止注入攻击,而csrf“超出的最大调用堆栈大小”是关于堆栈的大小,而不是单词列表使用的内存。换句话说,您可能有失控的递归或类似的东西。如果您共享代码,就有可能使其正常工作。虽然我认为你最好强制执行长度和/或复杂性。我基本同意,但这似乎还不够,我们不能让用户拥有“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa您可以继续使用现有方法,但只需为每种语言创建一个密码文件,而不是为所有语言创建一个庞大的密码文件。至少对于美国/欧洲而言,Dropbox已经开发和使用