1

我有一个简单的 HTML5/JavaScript 站点,它读取包含电子邮件帐户配置的本地(应用程序)XML 文件,并使用单个登录在单个页面上显示来自多个邮件帐户的邮件。本质上,一个邮件整合者。问题是,该站点托管在由 Web 主机管理的共享服务器上的云中。我不希望将电子邮件帐户凭据以纯文本形式保存在配置文件中。我正在努力想出一个合理安全的解决方案,但到目前为止还没有运气。

我可以加密 XML 文件中的凭据,但是我看不到如何在不使 JavaScript 代码中的解密路径明显的情况下实现密钥。

我在这里要求的不是代码,而是帮助我指出正确的方向,设计一种实现这一目标的方法。有人会如何做到这一点,以便主机的某些技术不能简单地打开我网站中的文件并访问电子邮件帐户?

4

4 回答 4

1

如果我理解正确,您需要检索存储的密码,以连接到托管邮件帐户。这意味着,您不能使用单向哈希,而只能加密数据。

现在您面临的问题是,服务器必须能够解密帐户信息,并且所有服务器都可以做,攻击者也可以做。所以你需要一种方法,服务器本身不能解密数据。

一种可能性是,您使用用户定义的主密码加密所有数据。这个密码永远不应该存储在服务器上,让用户在他想使用服务时输入这个密码。由于帐户信息只能使用此密码解密,并且无法从服务器访问密码,因此帐户信息应该是安全的。这也意味着无法重置密码。

当然,存储帐户信息是一件微妙的事情,如果你想承担这个责任,我真的会再想一想。有很多事情需要考虑,比如 SSL、XSS 等等。

于 2013-03-16T21:21:14.620 回答
0

您应该使用 SHA256 哈希对要加密的数据进行加盐和哈希处理。

新用户:

  1. 验证密码
  2. 加盐并散列密码
  3. 将哈希值存储在您的文件中

登录时:

  1. 哈希密码
  2. 将散列与存储在文件中的散列进行比较

这是一个包含更多详细信息的链接:

http://crackstation.net/hashing-security.htm

于 2013-03-16T18:02:09.327 回答
0

如果您担心“托管公司的某些技术”,请从使用专用或虚拟服务器开始。

但是,如果这超出了您的预算,那么您需要使用数据库来记录用户详细信息并至少对密码进行加密。不要使用 JavaScript 进行任何解密,因为它永远不会是安全的。而是使用服务器端编程语言,如 ASP、CGI、PHP 等。

于 2013-03-16T18:06:56.947 回答
0

使用像 php 这样的服务器端语言来进行加密和写入。这可能最好使用 Ajax 调用来实现。用户将能够看到被调用的脚本,但是因为 php 是服务器端,即使他们转到该页面,他们也无法知道 XML 文件的保存位置。

你真的不想依赖 JavaScript 来做任何安全的事情,因为它是客户端的,因此永远不安全。

于 2013-03-16T18:11:35.313 回答