我有一个简单的HTML5 / JavaScript网站,它读取包含电子邮件帐户配置的本地(到应用程序)XML文件,并使用单个登录在单个页面上显示来自多个邮件帐户的邮件。基本上,邮件整合者。问题是,此站点托管在由Web主机管理的共享服务器上的云中。我不希望在配置文件中以纯文本格式保存电子邮件帐户凭据。我正试图想出一个相当安全的解决方案,但到目前为止还没有运气。
我可以加密XML文件中的凭据,但是我无法看到如何在不使JavaScript代码中显示解密路径的情况下实现密钥。
我不是在这里要求代码,而是帮助我指出正确的方向来设计实现这一目标的方法。有人会怎么做才能让主机上的某些技术人员不能简单地打开我网站上的文件并访问电子邮件帐户?
答案 0 :(得分:1)
如果我理解正确,您需要检索存储的密码,以连接到托管邮件帐户。这意味着,您不能使用单向散列,而只能加密数据。
现在您遇到问题,服务器必须能够解密帐户信息,并且所有服务器都可以执行,攻击者也可以这样做。所以你需要一种方法,服务器本身不能解密数据。
一种可能性是,您使用用户定义的主密码加密所有数据。此密码不应存储在服务器上,只要用户想要使用该服务,就可以输入此密码。由于帐户信息只能使用此密码解密,并且无法从服务器访问密码,因此帐户信息应该是安全的。这也意味着无法重置密码。
当然,存储帐户信息是一件微妙的事情,如果你想要负责,我会再次思考。需要考虑很多事情,比如SSL,XSS等等。
答案 1 :(得分:0)
您应该使用SHA256哈希来加密和散列要加密的数据。
新用户:
登录时:
这是一个包含更多细节的链接:
答案 2 :(得分:0)
如果您担心“托管公司的某些技术人员”,那么请先使用专用或虚拟服务器。
但如果这超出预算范围,那么您需要使用数据库来记录至少密码的用户详细信息和加密。不要将JavaScript用于任何解密,因为它永远不会安全。而是使用服务器端编程语言,如ASP,CGI,PHP等。
答案 3 :(得分:0)
使用像php这样的服务器端语言进行加密和写入。这可能是使用Ajax调用最好的方法。用户将能够看到正在调用的脚本,但由于php是服务器端,即使他们转到该页面,他们也无法分辨XML文件的保存位置。
你真的不想依赖JavaScript来做任何安全的事情,因为它是客户端,因此永远不会安全。