Javascript Node.JS,我的密码在RAM中安全吗?

Javascript Node.JS,我的密码在RAM中安全吗?,javascript,node.js,security,Javascript,Node.js,Security,我有一个小webApp,允许人们使用Express和Node.JS创建个人页面。每个页面都是一个对象,这意味着您可以使用:newprivatepage(name,pswd)创建一个新页面,因此所有密码都存储在对象的pswd属性中 我的问题是,他们在这里安全吗,还是很容易“黑客”他们 编辑:我的密码平均最多只需要存储24小时,因为如果页面在短时间内处于非活动状态,它们会自动删除。这取决于您如何定义“安全” 作为安全最佳实践,您应该假设RAM中没有任何东西是安全的。错误的软件和操作系统代码可能存在导

我有一个小webApp,允许人们使用Express和Node.JS创建个人页面。每个页面都是一个对象,这意味着您可以使用:
newprivatepage(name,pswd)
创建一个新页面,因此所有密码都存储在对象的pswd属性中

我的问题是,他们在这里安全吗,还是很容易“黑客”他们


编辑:我的密码平均最多只需要存储24小时,因为如果页面在短时间内处于非活动状态,它们会自动删除。

这取决于您如何定义“安全”

作为安全最佳实践,您应该假设RAM中没有任何东西是安全的。错误的软件和操作系统代码可能存在导致缓冲区溢出的漏洞,熟练的攻击者可以通过这些漏洞控制服务器的内存段,其中可能包含页面密码等敏感数据。值得注意的是,探索缓冲区溢出问题是一项困难的任务,但随着Internet的存在,任何人都可以创建任何人都可以运行的工具。因此,将敏感数据短时间保存在内存中是最佳做法,以降低暴露于此类问题的风险

现在,另一方面,您可能有一个非常可靠的策略来更新服务器上的安全补丁,并在宣布安全问题时尽快更新。在这种情况下,我会说你的风险较低,但这并不会剥夺100%的黑客攻击机会。这就是为什么我首先说这取决于你希望你的环境有多“安全”。

它们绝对不安全

您使用bcrypt存储它们,这是世界上使用的最新和最好的哈希算法。如果你使用这个,数据库中存储的密码是绝对安全的


希望这对您有所帮助。

当您控制应用程序运行的操作系统时,破解它们总是很容易的。但是不,从外部攻击它们并不容易。在这些情况下,你是否打算让它们“存储”更长时间?“小时”很长。“对于单个请求的时间”很短。您是否计划让应用程序只在内存中存储所有内容?因此,如果应用程序崩溃,必须重新启动,所有页面都会消失?好吧,我不太关心服务器崩溃,因为这更像是一个理论问题,而不是一个实际问题。理论上的建议是总是对它们进行散列。您不能完全防止它们在RAM中发生,但应该将它们在RAM中的时间限制在尽可能短的范围内。在它们的整个生命周期(在您的情况下是24小时)内不加密存储它们是一种不好的做法。哦,我想大多数DBs Encrypion都不安全,一般来说,进行加密,因为密钥在某个时候必须在RAM中,除非您有HSM。嗯,密码在接收并提供给bcrypt时在RAM中,所以我猜这也不安全。NIST建议使用PBKDF2,但他们知道什么定义“绝对安全”?