所有源代码都需要符合 PCI 吗?

Posted

技术标签:

【中文标题】所有源代码都需要符合 PCI 吗?【英文标题】:Does all source code need to be PCI compliant? 【发布时间】:2011-09-05 21:21:14 【问题描述】:

我们过去从未传输、处理或存储信用卡信息,因为我们通过 PayPal 完成所有操作,因此我们从不需要符合 PCI 标准。

但是,我们正在推出一个新的在线商店,并且通过无缝结账,处理信用卡信息而不重定向到 PayPal,我们现在需要 PCI 合规性。

我们将咨询一家合格的安全评估公司,以指导我们获得和维护 PCI 合规性。但是,在他们试图向您推销您可能不需要的所有服务之前,我想在咨询他们之前对我正在查看的内容有一个不错的了解。

在PCI合规性方面,我理解需要在软硬件层面进行,并满足12点+要求。我们将使用 Magento Professional,因为它具有符合 PCI 的支付系统,并且我们将使用符合 PCI 的网络托管公司(专用服务器)。但就软件而言,您是否需要在所有方面都符合 PCI 标准?还是只是传输、存储和处理信用卡信息的软件?

例如,根据 Magento 的说法,支付软件符合 PCI,而 Magento 平台则不符合。因此,这允许您对 Magento 进行更改、修改和自定义,而不会影响支付软件的 PCI 合规性。

换句话说,我在问,您是否只需要处理传输、处理和存储信用卡信息的源代码/软件符合 PCI 标准?这些“合格的安全评估公司”给人的印象是所有源代码都需要检查 PCI 合规性,这是不可能的!

例如,在 Magento 的情况下,我可以对其进行更改和修改并仍然保持 PCI 兼容吗?只要支付模块不受影响,因为它符合 PCI 且网络托管、服务器和操作系统符合 PCI?

我的意思是不处理信用卡的 phpjavascriptmysql 东西不需​​要合规是吗?他们当然会在同一台服务器上。

【问题讨论】:

像 Skype 一样,隔离一个单独的服务器来处理卡片数据。看看这个项目:github.com/joelonsql/pci-blackbox 【参考方案1】:

基本答案是视情况而定。通常,只有处理(或可以处理)PCI 的敏感和受保护数据的源代码才需要符合 PCI。但是,这意味着如果您的代码的其他区域可以访问安全区域,那么您也需要那里的安全性。例如,如果您的应用程序的另一个区域容易受到 SQL 注入的攻击,它可能会危及您的信用卡系统。这就是为什么有些人会倾向于所有软件的 PCI 合规性。必须确保可以利用编写不佳的软件来破坏数据的安全性。

我说这取决于,因为检查人员总是有一些解释空间。然而,好消息是,在所有标准中,PCI 似乎是最直接和最具体的关于您需要做什么和不能做什么的标准。以下是有关 PCI 直接说明的更多信息:

https://www.pcisecuritystandards.org/documents/infosupp_6_6_applicationfirewalls_codereviews.pdf

这里的基本问题是确保该站点不能在任何地方被利用。如果您在应用程序区域(信用卡数据与普通网站)之间建立了足够的“防火墙”,那么您只需扫描一些代码就会大有帮助。此外,正如上述文档所述,您不必为了符合 PCI 标准而进行源代码审查。但是,您的应用程序需要经过广泛的测试,以确保它不受典型漏洞的影响。

【讨论】:

【参考方案2】:

我无法谈论 PCI 合规性的法律细节,但如果我是您系统的审核员,如果任何非认证代码以与运行认证代码相同的用户 ID 运行,我会大声尖叫。

我还会非常仔细地查看系统上的 setuid/setgid 可执行文件,以root 运行或使用提升的capabilities(7) 可能会影响 PCI 兼容软件,我可能会要求 @987654321 @ 工具,例如 AppArmor、SElinux、TOMOYO 或 SMACK,以及防止不受信任的执行域篡改服务器的 PCI 兼容部分的适当配置。

【讨论】:

虽然这可能是真的,但它与原始问题有点无关

以上是关于所有源代码都需要符合 PCI 吗?的主要内容,如果未能解决你的问题,请参考以下文章

编写符合 PCI 的程序集需要啥?

存储 CVV/CVC 电话是不是符合 PCI 标准?

我可以在没有 PCI 合规性的情况下存储用户银行详细信息吗?

为请求用户信用卡信息的表单提供服务的服务器是不是需要符合 PCI 标准

Firebase 托管 PCI 合规性

在不符合 PCI 的情况下通过 PayPal 重复借记卡/信用卡付款