将银行信息存储在数据库中的最佳实践

答案摘要:
不要这样做。 法律和财务影响将是灾难性的。 寻找既定的第三方解决scheme或聘请专家。 切勿将任何敏感信息存储在共享服务器上。 研究最适合的encryption机制。

我为客户build立一个网站,需要将客户的银行信息(路由+帐号)存储在分贝直接存款。 这里有一些细节:

1)网站最初将在一个共享的托pipe服务器上(这是我首先关心的问题)。
2)我正在使用PHP / MySQL。
3)我打算使用mcrypt。
4)密钥将位于Web根目录之外。

请让我知道你的想法。 如果可能的话,请给我提供一些关于ACH处理的资源。

谢谢!

编辑:我期待这样的反应,因为我害怕的安全问题也在那里。 我已经expression了我的顾客的关切,这将是一个很好的支持。

编辑2:将离开这一点。 对这个想法一开始并不满意! 将调查PayPal的大众支付API。

我想你可以解决这个问题,而不必通过使用诸如贝宝的大量支付API之类的东西来存储任何银行信息。 这样,您的客户就可以付款,PayPal会存储所有的信息,所以您不需要。

如果您想了解所有需要采取的步骤,甚至可以远程保护客户的敏感财务数据,Google“ PCI合规性 ”

如果你不是在网上存储财务数据,你是非常天真的。

不要这样做。

卜,如果你必须使用公钥/私钥encryption。 只存储和使用公钥来encryption进入数据库的数据。 将私钥存储在安全位置(意思是:不是托pipe服务器,而是具有适当访问控制的“安全”本地机器)。 必要时,将数据下载到本地计算机,使用私钥解密,然后离开。

但是,认真的,find一种方法来避免这样做,如果你可能的话。

1)网站最初将在一个共享的托pipe服务器上(这是我首先关心的问题)。 – 特别糟糕。 对服务器没有绝对的pipe理控制权,并且能够让其他人不能出门是一个很大的问题。

我真的担心你直接从前端Web服务器访问数据库。 这对于财务数据来说是一个很大的难题。

即使您拥有最强大的encryptionalgorithm,也能阻止某人劫持您的系统并使用它来解密数据。 他们不需要钥匙,他们只需要你的应用程序来为他们工作。 假设您使用单个密钥来encryption和解密数据,或者您正在从数据库中检索数据以向系统的用户显示。

好的,这是事情。 如果你不得不提出这些问题,那么你就没有技术上的专业知识来正确地做到这一点。 我不是想听起来很有意思,这只是一个事实。 我会和一群经验丰富的人一起工作。 将会有很多这里没有提到的东西需要考虑。 有很多关于安全性的东西本身没有写下来。 阅读书籍时你不会拿起的东西。 因为闯入金融体系的人们有很大的回报,所以这是一件非常艰难的事情。

在继续之前与律师谈谈您的潜在责任。 将个人银行数据存储在共享服务器上存在危险。 你无法控制谁最终能够掌握数据。

另外值得关注的是,这不是您客户的数据,而是您客户的客户数据! 您可能能够与您的客户达成协议,以保障您的利益,但不能在其客户涉及的情况下进行赔偿。 一旦数据泄漏,他们会马上回到你身边,让客户把他们的脖子拖下来!

对于银行信息,您的服务器应该是在他们的控制不共享。

另外,mcrypt不是很安全。 我知道它是内置的,但我会build议一些不是如此可触及的东西,如RSA。 如果有人确实掌握了这些信息,那么他们不应该能够在没有私钥的情况下进行破解。

我同意其他人 – 这是一个非常糟糕的主意。

专用服务器可以在每月79美元至99美元之间,如果这不是负担得起,我真的很想知道他们为什么要处理银行信息。 在这种情况下,首选的方法是在Web框中分离数据库。 最好是在它们之间有一些防火墙和其他保护(即两个防火墙,一个在Web服务器前,另一个在Web服务器和数据库之间)。

但是任何事情都比使用共享主机更好。 我的意思是说,你可以直接连接到SQL服务器,并查看所有可用的数据库 – 以最less的黑客行为来轻松跳转是多么容易?

另外,请告诉我的网站的名称,所以我从来没有注册,把我的银行信息! 🙂

此外,请确保你有错误和遗漏保险之前,共享主机。

我面临着和你一样的情况,并以这种方式解决了这个问题。

  1. 由于您不会进行ACH处理,请查看ACH处理API是否有能力创build客户。
  2. 如果是的话,这个客户对象通常会包括帐号,路由号码等,并将令牌存储在你的数据库中。 (所以当用户提供他的信息时,通过HTTPS直接传递给你的ACH处理器,并保存令牌)。
  3. 无论何时你不得不借记他们的账户,把这个令牌传给处理器,就是这样!

这样,你就不会在数据库上保存任何帐号和路由号码,即使有人攻击了数据库,他们也只能看到令牌,这是无用的 – 他们无法做任何事情,因为它是ACH处理器特定的。

我用Stripe做了类似的信用卡。

祝你好运!

你没有这方面的经验,在仓库俱乐部你甚至都找不到这么大的虫子。 这是您的客户需要聘请域名专家的情况; 如果你有兴趣在将来做这样的工作,尽量与专家密切合作,尽可能多地吸收知识。

我认为这里的每个人都已经公布了他们对这种情况的厌恶,所以在做任何types的encryption时(我们都认为是必要的),我只是会暗示另一个问题:

数据必须在某处encryption!

如果你在服务器上这样做,那么妥协的服务器将只是做你的encryption和传递他们没有encryption它们。

如果你在客户端上做这件事,这样会更安全一些,但是如果有人访问你的服务器,它仍然会打开大门:他们理论上可以简单地打开一个XSS漏洞(即在你的页面插入一个远程脚本.. )在encryption之前将副本发送到他们的盒子…

最后:如果你真的考虑在可能不是110%安全的服务器上执行此操作, WALK AWAY