我必须在我的应用程序中处理一些敏感数据,例如密码,信用卡信息等。 我可能遇到的安全风险是什么?如何避免这些风险?
答案 0 :(得分:2)
不要存储信用卡信息(在某些司法管辖区,您可能会违反法律,或者至少违反商业协议)
您没有说明您的敏感数据存储在何处,但是通常采用这种方式进行加密。有两种形式对称和不对称。对称意味着您使用相同的密钥进行加密和解密。不对称由公钥/私钥对组成。
密码:只存储密码的盐渍哈希(即不可逆),并与输入密码的类似盐渍哈希进行比较。
答案 1 :(得分:1)
请注意,您确实不应该在网络服务器上以任何形式或形式存储信用卡信息。
在网络环境中执行此操作的一些信息,这是我的背景:
如果网站(或任何应用程序)需要存储卡信息,则应符合PCI DSS(支付卡行业数据安全标准)。除此之外,它要求数据在不可公开访问的单独服务器上加密(IE:不托管站点),并且在它与Web服务器之间有一个单独的防火墙。如果在发生安全漏洞后发生任何欺诈活动,不遵守规定的处罚可能非常大,并且可能包括他们停止与您合作 - 它几乎保留了他们从欺诈中扣除任何损失的权利(来自我的)作为非法人解释)
更多相关信息:https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
显然,与共享主机相比,这可能很昂贵,因为您需要两台服务器和一大堆网络设备。这就是人们不经常这样做的原因。
答案 2 :(得分:0)
我倾向于在信息存储时对信息执行某种形式的可逆加密,例如:
$card = myEncryptionFunction($input);
有关应用程序性质的更多信息不会受到影响。
答案 3 :(得分:0)
我将对数据库数据使用可逆加密。确保此数据也不会渗透到日志文件中,而是记录派生信息。考虑如何处理不同的环境 - 通常您希望不在测试环境中使用生产数据。因此,即使您可能考虑将生产数据复制回测试系统,您也应该为敏感部件生成虚假数据。
答案 4 :(得分:0)
已经说过你不应该在你的数据库中存储CC尤其是CVV2信息,尽量避免使用。
如果您存储CC + CVV2,请考虑使用非对称加密并将您的私钥存储在另一台服务器中。否则,可以访问99%数据的攻击者可以访问密钥,整个加密将毫无意义。
密码应以单向散列方式存储。
在完成所有这些之后,您需要确保您的应用程序可以抵御SQL Injeciton,远程代码执行等漏洞。
不要忘记即使攻击者无法读取以前的数据,他们也可以为下一个数据植入后门。