2

我必须在我的应用程序中处理一些敏感数据,例如密码、信用卡信息等。我可能会遇到哪些安全风险以及如何避免它们?

4

5 回答 5

2
  • 不要存储信用卡信息(在某些司法管辖区,您这样做可能会触犯法律,或者至少违反商业协议)

  • 你没有说你的敏感数据存储在哪里,但加密它是通常的方法。有对称和不对称两种形式。对称意味着您使用相同的密钥进行加密和解密。非对称由公钥/私钥对组成。

  • 密码:仅存储密码的加盐散列(即不可逆),并与输入密码的类似加盐散列进行比较。

于 2009-05-16T07:45:06.393 回答
1

请注意,您真的不应该将信用卡信息以任何形式或形式存储在 Web 服务器上。

关于在 Web 环境中执行此操作的一些信息,这是我的背景:

如果网站(或任何应用程序)需要存储卡信息,则应符合 PCI DSS(支付卡行业数据安全标准)。除其他外,它要求将数据加密保存在不可公开访问的单独服务器上(IE:不托管该站点),并且在它和网络服务器之间有一个单独的防火墙。如果发生安全漏洞后的任何欺诈活动,对不遵守规定的处罚可能会非常大,并且可能包括他们停止与您合作 - 它几乎保留他们向您收取欺诈造成的任何损失的权利(来自我的作为非法人的解释)

更多信息在这里:https ://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

显然,与共享主机相比,这可能会很昂贵,因为您立即需要两台服务器和大量网络设备。这就是为什么人们不经常这样做的原因。

于 2009-05-16T07:53:26.467 回答
0

我倾向于在存储信息时对信息执行某种形式的可逆加密,例如:

$card = myEncryptionFunction($input);

不过,有关您的应用程序性质的更多信息不会受到伤害。

于 2009-05-16T07:44:10.577 回答
0

我将对数据库数据使用可逆加密。确保这些数据也不会渗入日志文件,而是记录派生信息。考虑一下你将如何处理不同的环境——通常你不想在的测试环境中使用生产数据。因此,即使您可能考虑将生产数据复制回测试系统,您也应该为敏感部分生成虚假数据。

于 2009-05-16T07:48:25.950 回答
0

已经说过,您不应该在数据库中存储 CC 尤其是 CVV2 信息,尽可能避免。

如果您存储 CC + CVV2,请考虑使用非对称加密并将您的私钥存储在另一台服务器中。否则,可以访问 99% 数据的攻击者可以访问密钥,整个加密将毫无意义。

密码应以一种散列方式存储。

毕竟,您需要确保您的应用程序能够抵御 SQL 注入、远程代码执行等漏洞。

不要忘记即使攻击者无法读取以前的数据,他们也可以为下一个数据植入后门。

于 2009-05-16T09:00:36.900 回答