Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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中存储web应用程序的用户密码-这安全吗?_Javascript_Security_Encryption_Web Applications_Passwords - Fatal编程技术网

在客户端JavaScript中存储web应用程序的用户密码-这安全吗?

在客户端JavaScript中存储web应用程序的用户密码-这安全吗?,javascript,security,encryption,web-applications,passwords,Javascript,Security,Encryption,Web Applications,Passwords,TL;DR-将web应用程序的用户登录密码存储在JS内存中,用于用户数据的客户端加密:是还是不是 我正在开发一个web应用程序,用户可以在云中存储笔记。用户有登录的密码。此外,用户可以选择使用密码加密注释。这些笔记被加密存储在云中,这意味着只有用户才能解密它们,如果密码丢失,笔记就会丢失 为了方便用户,最好使用相同的密码进行帐户登录和便笺加密,并且在登录时将该密码存储在内存中的JS变量中,这样他们就不必在应用程序每次需要加密或解密任何内容时重新输入密码,例如,如果他们更新便笺 这不安全吗?是的,

TL;DR-将web应用程序的用户登录密码存储在JS内存中,用于用户数据的客户端加密:是还是不是

我正在开发一个web应用程序,用户可以在云中存储笔记。用户有登录的密码。此外,用户可以选择使用密码加密注释。这些笔记被加密存储在云中,这意味着只有用户才能解密它们,如果密码丢失,笔记就会丢失

为了方便用户,最好使用相同的密码进行帐户登录和便笺加密,并且在登录时将该密码存储在内存中的JS变量中,这样他们就不必在应用程序每次需要加密或解密任何内容时重新输入密码,例如,如果他们更新便笺

这不安全吗?是的,有权访问用户计算机的攻击者可以进行内存转储,或者在uglified JS中插入断点,等等,然后获取密码。但是,能够访问用户机器的攻击者无论如何都可以做到这一点:为了登录,在我的应用程序的JS中,必须有一个点,用户的密码可以通过纯文本访问


因此,对我来说这似乎没什么问题——没有比不储存它更不安全的了。想法?

好吧,如果只有用户可以访问自己的密码,那么应该没问题。但是如果云没有像你说的那样安全,我认为它不是最好的。您应该改用服务器端密码系统。我是一个全职的白帽黑客,客户端的任何东西都很容易被盗。如果您存储的都是便笺而不是信用卡信息,那么就可以了。

只有使用SSL/TLS才是安全的,因为否则,基于网络的攻击者可能会使用中间人攻击来更改客户端JavaScript代码,从而将密码直接发送给攻击者,包括所有便笺


如果您拥有该功能,并且能够有效防止攻击者添加更多JavaScript(例如通过XSS),您应该不会有问题。

是的,JavaScript变量将受到相同来源策略的保护,以防止其他域访问此数据

考虑将密码的salted散列存储为JavaScript变量,然后使用此散列对云中的数据进行加密和解密。这将防止本地攻击者在其他人的计算机上查询本地变量,以获取密码,即他们在抓取咖啡时未锁定屏幕。这是一个略高的风险,因为攻击涉及窃取会话,这在无人值守的计算机上很容易做到,就像密码可能在其他站点上重复使用一样。你不希望你的网站成为攻击的弱点,从而获得对其他用户Gmail、银行账户、Facebook、Twitter等的访问权

也要考虑,以便使加密密钥足够强大。由于加密密钥是称为基于密码的加密的密码,因此需要导出至少128位熵的密钥,这比普通用户的密码包含的信息量要多

<> P>设计中要考虑的其他事项:

使用TLS保护HTTPS上的所有通信。 对于任何会话cookie,如果可能,设置安全标志和仅HTTP标志。 使用HST确保来自重复用户的未来连接仅为HTTPS。
用户可以将信用卡或任何东西存储在他们的笔记中,至少我希望如此,而且我通常希望这些东西能够得到适当的安全保护。我们的想法不是在服务器端完成。只有用户/客户机才可以访问notes,这是一个很好的观点。web应用程序是通过HTTPS提供的,因此这就得到了解决。