54

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

我正在为需要将其客户的银行信息(路由+帐号)存储在数据库中以进行直接存款的客户建立一个网站。以下是一些细节:

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

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

谢谢!

编辑:我期待这样的回应,因为我也害怕那里的安全问题。我已经向我的客户表达了我的担忧,这将是一个很好的支持。

编辑 2:将远离这一点。一开始对这个想法不满意!将调查 PayPal 的 Mass Payment API。

4

9 回答 9

79

我认为您可以通过使用诸如Paypal 的 Mass Payment API 之类的东西来解决这个问题,而无需自己存储任何银行信息。这样一来,您的客户就可以向人们付款,而 PayPal 会存储所有信息,因此您不必这样做。

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

如果您不是非常害怕在线存储财务数据,那您就太天真了。

于 2009-02-27T21:32:30.127 回答
15

1)该网站最初将位于共享托管服务器上(这是我首先关心的问题)。 - 特别糟糕。没有对服务器的绝对管理控制,并且能够将其他人拒之门外是一个非常大的问题。

我真的很担心您是从前端 Web 服务器直接访问数据库。这是财务数据的一大禁忌。

即使您拥有有史以来最强大的加密算法,如何防止有人劫持您的系统并使用它为他们解密数据。他们不需要密钥,他们只需要您的应用程序为他们完成工作。这是假设您使用单个密钥来加密和解密数据,或者您正在从数据库中检索数据以显示给系统用户。

好的,事情就是这样。如果您必须提出这些问题,则说明您不具备正确执行此操作的技术专长。我不是想听起来刻薄,这只是一个事实。我会和一群经验丰富的人一起工作,他们首先做这个专业。有很多这里没有提到的事情需要考虑。有很多关于安全的东西本身并没有写下来。读一本书学不到的东西。这是一件非常困难的事情,因为闯入金融系统的人可以获得丰厚的回报。

于 2009-02-27T21:14:15.130 回答
14

不要这样做。

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

但说真的,如果可能的话,想办法避免这样做。

于 2009-02-27T21:16:19.183 回答
5

在继续之前与律师讨论您的潜在责任。将个人银行数据存储在共享托管服务器上会带来危险。您无法控制谁能最终获得数据。

另外值得关注的是,这不是您客户的数据,而是您客户的客户数据!您也许可以与您的客户达成协议以赔偿您,但当他们的客户参与其中时则不行。一旦数据被泄露,他们会立即转回给您,客户会紧跟其后!

于 2009-02-27T21:22:39.167 回答
3

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

此外,mcrypt 也不是很安全。我知道它是内置的,但我会建议一些不太容易破解的东西,比如 RSA。如果有人确实掌握了这些信息,那么他们应该无法在没有私钥的情况下破解它。

于 2009-02-27T21:18:16.540 回答
2

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

专用服务器的价格在每月 79 美元到 99 美元之间,如果这无法承受,我真的想知道他们为什么要从一开始就处理银行信息。在这种情况下,首选方法是让数据库与 Web 框分开。最好有一些防火墙和它们之间的其他保护(即2个防火墙,一个在Web服务器前面,一个在Web服务器和数据库之间)。

但任何事情都会比使用共享主机更好。我的意思是,您可以直接连接到 SQL 服务器并查看所有可用的数据库 - 以最少的黑客攻击直接跳入其中有多容易?

另外,请告诉我网站的名称,这样我就永远不会注册并将我的银行信息放在上面!!!:)

此外,在继续使用共享主机之前,请确保您有错误和遗漏保险。

于 2009-02-27T21:24:07.183 回答
2

我遇到了和你类似的情况,就这样解决了。

  1. 由于您不会进行 ACH 处理,因此请确定 ACH 处理 API 是否能够创建客户。
  2. 如果是,则此客户对象通常会包括帐号、路由号码等,并将令牌存储在您的数据库中。(因此,当用户提供他的信息时,您通过 HTTPS 将其直接传递给您的 ACH 处理器,并保存令牌)。
  3. 每当您必须从他们的帐户中扣除时,将此令牌传递给处理器,就是这样!

这样,您就不会在数据库中保存任何帐户和路由号码,即使有人入侵了数据库,他们也只会看到令牌,这是非常没用的 - 他们无法用它做任何事情,因为它是 ACH 处理器特定的。

我已经为使用 Stripe 的信用卡做了类似的事情。

祝你好运!

于 2015-08-25T13:10:27.100 回答
1

你没有这方面的经验,你甚至在仓库俱乐部都找不到这么大的蠕虫罐头。这是您的客户需要聘请领域专家的情况;如果您有兴趣在未来从事此类工作,请尝试与专家密切合作并尽可能多地吸收知识。

于 2009-02-27T21:47:22.680 回答
0

我认为这里的每个人都已经充分表达了他们对这种情况的厌恶,所以我会在进行任何类型的加密时提示另一个问题(我们同意这是必要的):

数据必须在某处加密!

如果您在服务器上执行此操作,那么受感染的服务器只会执行您的加密并在不加密的情况下传递它们。

如果您在客户端执行此操作,这会更安全一些,但如果有人可以访问您的服务器,仍然会敞开大门:理论上他们可以简单地打开一个 XSS 漏洞(即在您的页面中插入远程脚本.. .) 在加密之前将副本发送到他们的盒子...

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

于 2009-02-27T21:52:18.470 回答