保持用户匿名 - 仅限安全数据库选项 - 一般想法?

时间:2016-03-25 19:51:27

标签: node.js database security bcrypt database-security

我正在开发一个网络应用程序,正在考虑如何保持用户的身份完全匿名。

但是我已经得出结论,除了集中精力保护数据库不被黑客攻击外,我无能为力。

这是StackOverflow上的普遍共识还是我可能错过了任何方法?

所以我想到了:

  • 直接的bcrypt哈希和盐,然后由于各种原因导致联系用户。
  • 密码重置。我可以保存恢复问题/答案,但当然答案需要是可读的,以便击败事情。
  • 另一点是说他们忘记了我在注册时产生的安全问题或用户名。无法将它们链接到帐户。
  • 还想到了(假设我已经征服了上述内容)限制重复用户。如果我进行哈希/盐渍搜索在处理时会非常“沉重”?我可以简单地保留一长串使用过的电子邮件,然后将问题再次链接到现有帐户?

有兴趣听听您的想法。

感谢。

2 个答案:

答案 0 :(得分:3)

我认为你描述的场景是可能的。您可以在用户登录时为其提供解密令牌。令牌可以分配给前端应用程序中的变量,因此如果他们离开站点或页面,令牌将丢失,他们将不得不再次登录。

使用该令牌,该应用程序可以解密来自服务器的加密数据。因此,可以使用令牌加密所有数据。然后,如果需要更改密码,您可以在生成新密码时生成新令牌,并且您的服务器必须解密,然后使用新令牌重新加密所有数据。通过这种方式,您可以在使用SSL时对所有服务器文件,代码和数据库进行加密,这样所有数据都将是匿名的,直到它到达用户进行显示。登录用户是获取令牌解密来自服务器的任何数据的唯一方法。这会大大降低服务器性能。

Atmel在其微芯片中使用此技术从设备到云进行100%加密。这对于芯片来说是有意义的,因为用户不必在视觉上与它进行交互。在webapp的情况下,需要某种方式来解密数据以供显示。这限制了可能性。

以下是一些可能有用的链接: https://www.jamesward.com/2013/05/13/securing-single-page-apps-and-rest-services https://www.fourmilab.ch/javascrypt/javascrypt.html

以下是使用上述安全方法的Atmel芯片的链接。 http://www.atmel.com/products/security-ics/cryptoauthentication/

答案 1 :(得分:2)

首先,完全匿名的唯一方法是永远不要上网。没什么,我什么都不做,是完全安全的。任何哈希,加密,数据库等都可以被破解。如果一个恶意的“黑客”真的想要这些信息,无论你怎么努力,他们都会找到一种方法来获取它。

现在已经说过了,你所描述的是可能的,例如看看Tor,代理,VPN等,如果你完全加密从用户那里获得的每一点信息,那么你就会有所作为。然而,如果出现问题,这可能会成为一个问题,例如,你说三重哈希,多盐所有哈希,并遇到一个需要解密用户信息的问题(为了争论,FBI要求它)a使用MD5加密的单个salted哈希可能需要2-5个小时才能解密/破解。您已经加密了所有信息,包括IP,用户名,密码,电子邮件,姓名等,现在您可能需要花费一天时间来解密单个用户。

但是,你可以做一些事情,就是在你的浏览器中创建一个加密的隧道,用户必须访问才能运行浏览器(有点像VPN),然后从浏览器URL中抛出代理进一步的仇恨。这样,用户处于具有不同IP的加密隧道中,并使用除了通过隧道给出的IP之外的IP。你甚至可以经常跳转IP,并改变代理。

现在让我们来保护数据库,我建议使用多个salting哈希,用密码保护它们,并从数据库所在的计算机中删除密码短语。如果您需要访问哈希进行解密,这也可能会很麻烦。

我说去吧,最糟糕的情况是你会有一点用户的痕迹。但请记住,如果你成功创建了这个,恶意的人会试图利用它,只是为了看看它们是否可以。