在php/mysql应用程序中收集和存储银行账户详细信息时的安全注意事项

7
我们被要求研究一种应用的可行性,用于收集银行账号和排序码,并将其临时存储以通过无纸直接借记系统进行离线处理。数据将通过256位SSL连接从网站访问者收集,并存储在MySQL数据库中,以供我们的客户稍后收集。这些数据将暂时保存,直到下载后从数据库中删除。详情:我们在此特定服务器上托管了其他几个网站;没有人有shell访问或FTP访问服务器;服务器符合PCI标准;Mod_security和其他软件正在运行。我知道这与在数据库中存储银行信息的最佳实践非常相似,并且感谢大部分回答都是要避免使用数据库。我理解安全考虑的清单可能非常庞大。我们应该关注哪些特定的安全领域?

为什么用户会下载他们早已与你分享的数据(如银行账户)?我假设下载数据的是用户本人,当然不想去想是其他人在这么做 :) - Armen Michaeli
你好,我们的客户将下载数据并使用银行详细信息设置直接借记以从账户中扣款。我们不参与此过程,我们所需做的就是提供一种方法,让我们的客户在网站访问者提供信息后访问这些信息。 - BrochanGuMor
1个回答

6
使用非对称加密,以便在将数据插入数据库之前对其进行加密,但是您不会在服务器上存储解密数据所需的密钥。
该密钥应仅存储在客户端,以便他们可以在从服务器检索数据后解密它。
即使有了这种保护,您仍需要创建一种安全连接方式,让他们能够安全地连接到您的服务器。如果您打算让他们直接连接MySQL,则应谨慎接受外部连接到MySQL监听端口。如果他们有静态IP,您可以利用软件或硬件防火墙以此方式限制它,如果无法创建VPN,则不可行。
答案提供了一些关于使用PHP内置的openssl_*函数进行非对称加密的信息。
如有必要,请询问任何需要澄清/扩展的内容。

1
你好 MH,非对称加密听起来似乎是正确的选择。我们已经阻止了所有对MySQL服务器的外部连接,除了两个静态IP地址。我相信在将数据插入数据库之前对其进行加密。您有没有关于客户端收集和解密此数据的方法的建议?他们最初要求一个CSV文件。 - BrochanGuMor
你的意思是将数据解密并在Android、iOS等设备上存储解密密钥吗? - Rishabh Dhiman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接