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

Posted

技术标签:

【中文标题】编写符合 PCI 的程序集需要啥?【英文标题】:What does it take to write a PCI compliant assembly?编写符合 PCI 的程序集需要什么? 【发布时间】:2012-02-28 10:19:45 【问题描述】:

我有一个 WPF 应用程序,我们已将信用卡处理集成到其中。我们目前正在 WPF Web 浏览器中将信用信息刷入/输入到网页中,以满足 PCI 合规性。显然这没问题,因为 Web 浏览器组件是 PCI 兼容的,而且我们的代码从不处理信用卡信息。

我非常讨厌这种设计,并且很想编写一个独立的、符合 PCI 的 WPF 控件/程序集,我们可以插入它而不是 Web 浏览器组件。如果我们的应用程序的代码可以使用浏览器而无需经过 PCI 认证,那么它可以使用我们自己的经过 PCI 认证的程序集而无需经过 PCI 认证,对吗?它所做的所有新控制/组装都是收集卡信息,并通过 WCF 服务将其安全地发送到远程安全服务器。它不会在本地存储信用卡或对其进行任何处理。有人告诉我这样做需要 9 个月的审查过程,这就是我们采用浏览器方法的原因。

有人可以给我一个大致的想法吗?

可以用 C#/WPF 编写吗? 代码是否必须实施特殊的安全措施 (如 CAS)? 是否必须对程序集进行混淆处理? 一旦写好了,那你要做什么呢?

【问题讨论】:

有多个级别的 PCI 合规性,只要您触摸 CC 数据就会提升级别。如果您在应用程序中嵌入 CC 信息的捕获,则没有真正的解决方法。 Web 浏览器控件起作用的原因是因为 CC 信息永远不会在您的应用程序的内存中,而是直接发送给第三方。整个 PCI 合规性令人头疼,但总的来说,我很高兴我的数据至少看起来很安全。 【参考方案1】:

虽然与 PCI-DSS 有大量重叠,但您要查找的正式名称是 PA-DSS(支付应用程序数据安全标准)。

解决您的问题的最佳方法之一是将卡片输入/卡片处理部分分离到一个完全独立的解决方案中。这个单独的解决方案最终将成为通过 PA-DSS 认证的“应用程序”。一旦获得认证,您就可以将其嵌入到您的大型项目中(这不会改变大型项目的 PCI 合规性)

当您研究 PA-DSS 时,将其分离出来的优势会变得很明显。标准之一是任何需要重新编译应用程序的更改都需要重新认证应用程序。这不是你想要经常做的事情!

另一个有助于简化流程的策略是考虑“内部”应用程序(不分发给客户)不需要经过 PA-DSS 认证(但如果它们处理卡,仍然属于 PCI-DSS数据明显)。因此,在您的域中使用 Web 服务可能会使事情变得更容易。例如,您可以托管一个“付款条目详细信息”网页,然后在您的主应用程序中使用标准网络浏览器指向您的付款条目页面。这可能会让您绕过 PA-DSS 认证(尽管您现在托管的网页仍需要 PCI 认证)

无论您做出什么决定,最好的建议是在您合理掌握预期设计后立即让 QSA 参与其中。 QSA 将就哪些领域可能导致合规问题提供建议,并最终由 QSA 签署您的合规问题

【讨论】:

谢谢!困难的部分是弄清楚在哪里看。

以上是关于编写符合 PCI 的程序集需要啥?的主要内容,如果未能解决你的问题,请参考以下文章

我没明白这个示例程序集有啥问题

T-SQL 中经过 Windows 身份验证的用户需要啥访问权限才能创建 External_Access 或 Unsafe 程序集?

r软件ManyNAs函数属于啥程序包

有啥方法可以在生产环境中使用数据集调试应用程序?

使用星号时是啥导致程序集版本增加?

.NET 进程和 AppDomain 在啥情况下会共享内存中加载的程序集?