我有一个简单的 HTML5/JavaScript 站点,它读取包含电子邮件帐户配置的本地(对于应用程序)XML 文件,并使用单次登录在单个页面上显示来自多个邮件帐户的邮件。本质上是一个邮件整合器。问题是,该网站托管在云中由网络主机管理的共享服务器上。我不希望电子邮件帐户凭据以纯文本形式保存在配置文件中。我正在绞尽脑汁试图想出一个相当安全的解决方案,但到目前为止还没有运气。
我可以加密 XML 文件中的凭据,但我不知道如何在 JavaScript 代码中不显示解密路径的情况下实现 key 。
我在这里要求的不是代码,而是帮助我指明正确的方向,设计一种实现这一目标的方法。如何才能让主机上的某些技术人员无法简单地打开我网站中的文件并访问电子邮件帐户?
最佳答案
如果我理解正确,您需要检索存储的密码,才能连接到托管邮件帐户。这意味着,您不能使用单向哈希,而只能加密数据。
现在你面临的问题是,服务器必须能够解密帐户信息,而服务器能做的所有事情,攻击者也能做。因此,您需要一种方法,使服务器本身无法解密数据。
一种可能性是,您使用用户定义的主密码加密所有数据。该密码不应存储在服务器上,让用户在需要使用该服务时输入该密码。由于帐户信息只能使用此密码解密,并且无法从服务器访问该密码,因此帐户信息应该是安全的。这也意味着无法重置密码。
当然,存储帐户信息是一件微妙的事情,如果您想要承担这方面的责任,我真的会再考虑一下。有很多事情需要考虑,例如 SSL、XSS 等等。
关于javascript - 如何在共享服务器上安全地存储用户名和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452684/