理解PCI合规性及其对PHP开发的影响
PCI代表“支付卡行业”,但对许多人来说,它是一套由秘密国际卡特尔强加的模糊标准,这些标准旨在用繁重的法规和法律纠纷来埋葬毫无戒心的灵魂。事实的真相要枯燥得多。实际上,PCI是由信用卡公司和行业安全专家组成的联盟制定的一套安全指南,用于规范应用程序在处理信用卡或借记卡信息时的行为。信用卡公司将这些标准强加于银行,然后银行将其强加于我们这些运营电子商务网站的人。在本文中,我们将消除关于PCI的一些持续存在的误解,从20,000英尺的高度了解PCI的内容,然后重点关注与一般编码和PHP相关的那些要求。
关键要点
- PCI(支付卡行业)标准是由信用卡公司和安全专家制定的安全指南,用于规范应用程序如何处理信用卡或借记卡信息。它们适用于所有接受信用卡信息进行支付的人,包括小型电子商务网站。
- PCI标准包含12项基本要求,包括构建和维护安全网络、保护持卡人数据、维护漏洞管理程序、实施强大的访问控制机制、定期监控和测试网络以及维护信息安全策略。
- PHP开发人员在创建处理信用卡数据的应用程序时必须遵守这些标准。这包括不使用供应商默认配置文件或密码、保护和加密存储的持卡人数据、开发安全系统和应用程序、限制访问以及跟踪和记录对资源和数据的所有访问。
- 虽然PCI标准提供安全方面的指南和想法,但它们并非具体的技术,也不能保证免受黑客攻击。但是,遵守这些标准可以降低安全漏洞的可能性,并提高公司的法律和消费者地位。
- 遵守PCI标准并非一次性任务,需要持续关注和年度审查。开发人员应通过PCI安全标准委员会网站以及相关的安全新闻通讯、博客和培训计划等资源,随时了解最新的PCI要求和安全最佳实践。
PCI误解
毫不奇怪,围绕PCI标准存在许多误解。其中一个误解是,它们就像黑手党的行为准则一样,没有写在哪里,因此可以按照你想要的方式解释。当然,这是不正确的。要了解PCI标准的完整说明,只需访问pcisecuritystandards.org即可。另一个误解是,PCI安全标准仅适用于银行和大型零售商等“大公司”。它们适用于每一个接受信用卡信息来支付商品的人。如果你为你的母亲编写了一个PHP网站来出售她著名的柠檬派,那么你就有了一个符合PCI指南的系统。第三个误解是,如果你遵循PCI标准,那么你将受到保护免受恶意黑客攻击,你的数据将保持安全。当然,这很好,但事实是,PCI标准是指南和想法,而不是具体的技术(它们必须含糊不清才能适应所有架构和平台)。显然,你越关注安全,被攻击的几率就越小,但任何人都可能受到攻击。如果你至少尝试过满足PCI的期望,那么在法律和消费者方面,你的评价都会更好。最后,PCI不是你做一次然后深呼吸就能完成的事情。该标准要求你每年进行一次PCI审查,因此这就像质量保证工作或倾听你配偶的意见一样,是一项持续进行的工作。简单的事实是,PCI是每个从事处理信用卡数据的应用程序的程序员都需要了解的事情,无论规模大小。是的,这就是为什么经销商只收现金的原因。
PCI基础知识
PCI标准由12项基本要求组成。该标准大约每两年更新一次,在此期间会发布各种更具体的指南文件,这些文件处理PCI世界中的某个子集。例如,在2013年2月,PCI人员发布了一份白皮书,讨论了PCI和云计算。这些特别报告也可从PCI网站获得。正如我们将看到的,许多PCI要求更多地与网络相关,但是,如果你没有对完整的PCI有一个基本的了解,那么谈论这些东西还有什么意义呢?这些要求是:
-
区域1 – 建立和维护安全网络
- 要求1 – 安装防火墙以保护您的环境。
- 要求2 – 不要使用供应商默认配置文件或密码。
-
区域2 – 保护持卡人数据
- 要求3 – 保护存储的持卡人数据。
- 要求4 – 对在开放的公共网络上传输的持卡人数据进行加密。
-
区域3 – 维持漏洞管理程序
- 要求5 – 使用并定期更新防病毒软件。
- 要求6 – 开发和维护安全的系统和应用程序。
-
区域4 – 实施强大的访问控制机制
- 要求7 – 基于需要了解的原则限制对持卡人数据的访问。
- 要求8 – 为每个具有计算机访问权限的人分配一个唯一的ID。
- 要求9 – 限制对持卡人数据的物理访问。
-
区域5 – 定期监控和测试网络
- 要求10 – 跟踪和监控/记录对网络资源和持卡人数据的所有访问。
- 要求11 – 定期测试安全系统和流程。
-
区域6 – 维持信息安全策略
- 要求12 – 维持一项解决信息安全的策略。
其中一些项目与政策决策有关,即制定明确说明你如何努力保护卡信息并确保网络和应用程序整体安全的策略的决策。其他要求与网络本身以及你可以用来保护它的软件有关。其中一些涉及流程的设计阶段,你如何构建和设置你的应用程序。几乎没有任何要求与代码有关,而且没有任何要求描述建议你保持安全的特定编程技术。为了保持篇幅相对较短,我将限制我的讽刺和智慧(比例为70:30),并关注最后两组。
要求2 – 不要使用供应商默认的配置文件/密码
在许多方面,这几乎是不言而喻的。自从我们开始担心这些事情以来,安全人员一直在告诉我们这一点。但令人惊讶的是,在许多我们使用的软件(例如MySQL)中,使用默认帐户和密码是多么容易(尤其是在你第一次安装东西并且一切都处于“测试”状态时)。这里的危险性之所以增加,是因为我们大多数人都是围绕一些基本的软件来构建我们的应用程序,而不是从头开始做整个事情。它可能只是一个我们用来处理加密和密钥存储的包(见下文),也可能是整个应用程序的框架。无论哪种方式,易于记住,易于实现:不要使用默认帐户。
要求3 – 保护存储的持卡人数据
在我记得的大多数高调的零售网站黑客攻击事件中,都涉及到网站保存的卡或其他数据的盗窃,因此我将此列为PCI标准中最重要的部分。显然,你存储的任何卡数据都应该被加密。而且你需要做好加密工作。对于那些非常了解加密的人来说,你知道做好数据加密工作意味着你已经很好地管理了加密密钥。密钥管理围绕着生成、存储和更新加密过程中使用的密钥的问题展开。存储它们可能是一个大问题,因为你想确保没有人能够进入系统并窃取密钥。管理策略在如何将密钥分成多个部分方面有所不同;如果你想了解密钥管理的介绍,我建议你从Securosis的这份白皮书开始,然后继续学习,尽管要注意,水会很快变得很深。当然,如果你使用商业产品来处理加密,那么你可以将密钥管理留给他们,尽管你想确保他们的流程是可靠的,并且它符合你的方法。大多数商业产品都是考虑到PCI而开发的,因此将根据PCI标准构建,但这仍然不会妨碍你进行二次检查。此外,如果你最大限度地减少甚至消除你存储的数据量,那么保护数据这项任务将变得容易得多。也就是说,持卡人数据可以是他们的姓名、生日、卡号、有效期、卡验证(CV)码(卡背或卡正面上的三位或四位数字)等等。你保存的项目越少,你需要加密的就越少,你的责任就越小。幸运的是,这是一个PCI标准相当具体的领域,它明确规定了你可以和不可以保存哪些数据。你可以保存卡号(PAN – 主要帐户号码)、持卡人姓名、有效期和服务代码。如果你确实保存了PAN,那么如果你要显示它,则必须对其进行屏蔽,最多只能显示前六位和后四位数字。你不能存储PIN、CV码或磁条的全部内容。在设计阶段,你必须问自己的问题是,你真的想保留多少这些令人讨厌的数据。保留它的唯一真正原因是你希望在下一次为你的客户提供轻松的体验。你可以保留生日,这样你就可以在生日的时候给他们发一个友好的小邀请。所有这些数据都必须被加密和保护,所以确保你从中获得了一些可靠的商业用途。要求4(对任何正在传输的数据进行加密)算是这部分内容的一部分,但我将其视为基础设施的一部分,不再赘述。
要求6 – 开发和维护安全的系统和应用程序
这是与代码相关的要求。不是针对特定的函数或类,而是至少确保你遵循一般安全标准并尝试使你的东西尽可能安全。因此,你只需使用编码技术(无论使用哪种语言),这些技术不会使你的应用程序容易受到明显的攻击。例如,你尝试通过在接受表单数据时采取预防措施来防止SQL注入,你尝试阻止XSS等等。有关避免一些更常见安全问题的更多信息,请参阅SitePoint上发布的其他一些文章(这篇文章和这篇文章,以及如果你搜索“安全”可以找到的其他文章)。
要求7和8 – 限制访问和唯一ID
这两件事都与你访问应用程序的方式有关,因此介于编码和设计之间。要求每个访问者都有一个唯一的ID应该没有问题,除非——你恰好允许人们通过访客配置文件登录和购物。我可以想到几个允许你这样做的网站,它本身并不是邪恶的,但使用组配置文件很危险,你必须格外小心,以确保它们没有太多权限。一般来说,你应该努力设置唯一的ID,即使ID不是你保存的ID。例如,你可以让人们以访客身份登录,但随后立即在后台为该事件创建一个唯一的配置文件。我们还希望限制对持卡人数据的物理访问。这可能是对未来的暗示,那时我们将能够像艾萨克·阿西莫夫的《神奇旅程》中那样将人们缩小到亚微观尺寸,并将他们注入存储设备以获取卡数据的1和0……或者它也可能与锁定的服务器机房、所有访客的徽章、不让任何人接近备份磁带等事情有关。
要求10 – 跟踪和记录对资源/数据的所有访问
最后,不要低估跟踪和记录访问资源或持卡人数据的所有内容的重要性……我的意思是所有内容。应该记录的事件包括登录、注销、数据访问;数据更新,实际上任何涉及资源或数据元素并且你认为可能对审计跟踪或刑事审判中的证据有用的内容。你必须实现一个安全的日志,每天检查日志以查找问题,并将日志保存一年。对于PHP用户来说,熟悉来自PHP-FIG组的PSR-3日志记录标准将是有益的,它提供了一种统一而灵活的方式来设置你的日志记录。与其在这里深入探讨,我建议你阅读Patrick Mulvey的介绍性文章。
总结
我想真正强调的一件事是,PCI不是锦上添花。它是创建使用信用卡数据的应用程序的基础部分。如果你正在编写一个确实接收此类数据的应用程序,那么无论你的客户是否知道,它都适用于你。大部分内容都高于编码级别,但它是真实的,你仍然必须注意它。图片来自Fotolia
关于PCI合规性和PHP开发的常见问题解答(FAQ)
什么是PCI合规性,为什么对PHP开发人员很重要?
PCI合规性是指遵守支付卡行业数据安全标准(PCI DSS),这是一套安全标准,旨在确保所有接受、处理、存储或传输信用卡信息的公司都维护一个安全的环境。对于PHP开发人员来说,了解和实施PCI合规性至关重要,因为它有助于保护客户的敏感数据,降低数据泄露的风险,并建立与用户的信任。不遵守规定可能导致处罚、罚款,甚至丧失处理支付的能力。
PHP开发人员如何确保PCI合规性?
PHP开发人员可以通过几个关键步骤来确保PCI合规性。这些步骤包括使用安全的编码实践来防止常见的漏洞,加密敏感数据,实施强大的访问控制措施,定期测试和更新系统和应用程序,以及维护信息安全策略。
PHP中有哪些常见的安全漏洞,如何防止它们?
PHP中的一些常见安全漏洞包括SQL注入、跨站点脚本(XSS)和跨站点请求伪造(CSRF)。可以通过使用预准备语句或参数化查询来防止SQL注入,验证和清理用户输入来防止XSS,以及使用反CSRF令牌来防止CSRF攻击来防止这些漏洞。
PHP开发人员如何安全地处理信用卡数据?
PHP开发人员可以通过遵循PCI DSS要求来安全地处理信用卡数据。这包括加密在开放的公共网络上传输的持卡人数据,保护存储的持卡人数据,实施强大的访问控制措施,定期监控和测试网络,以及维护信息安全策略。
加密在PCI合规性中扮演什么角色?
加密在PCI合规性中扮演着至关重要的角色。它通过将敏感数据(例如信用卡信息)转换为无法读取的格式来帮助保护敏感数据,只有使用解密密钥才能对其进行解密。这确保即使在传输过程中截获数据,未经授权的个人也无法读取或使用它。
PHP开发人员如何实施强大的访问控制措施?
PHP开发人员可以通过确保为每个具有计算机访问权限的人分配一个唯一的ID,限制对持卡人数据的物理访问,以及根据业务需要了解的原则限制对持卡人数据的访问来实施强大的访问控制措施。此外,他们应该定期审查访问控制措施并根据需要进行更新。
不遵守PCI DSS 会有什么后果?
不遵守PCI DSS 会导致一系列后果,包括罚款、处罚,甚至丧失处理信用卡支付的能力。此外,它还会损害公司的声誉并导致客户信任度下降。
PHP开发人员多久应该测试一次他们的系统和应用程序是否存在安全漏洞?
PHP开发人员应该定期测试他们的系统和应用程序是否存在安全漏洞。测试频率将取决于PCI DSS 的具体要求,但作为最佳实践,系统和应用程序至少应每年测试一次,以及在任何重大更改之后进行测试。
什么是信息安全策略,为什么它对PCI合规性很重要?
信息安全策略是一家公司遵循的一套规则和程序,用于保护其信息资产。它对于PCI合规性很重要,因为它有助于确保所有员工都了解他们在保护持卡人数据方面的角色和责任,并为实施和维护安全控制提供框架。
PHP开发人员如何随时了解最新的PCI DSS 要求和安全最佳实践?
PHP开发人员可以通过定期检查官方PCI安全标准委员会网站,订阅相关的安全新闻通讯和博客,参加安全会议和网络研讨会,以及参加安全培训和认证计划来随时了解最新的PCI DSS 要求和安全最佳实践。
以上是PHP主| PCI合规性及PHP意味着什么的详细内容。更多信息请关注PHP中文网其他相关文章!

在PHP中,可以使用session_status()或session_id()来检查会话是否已启动。1)使用session_status()函数,如果返回PHP_SESSION_ACTIVE,则会话已启动。2)使用session_id()函数,如果返回非空字符串,则会话已启动。这两种方法都能有效地检查会话状态,选择使用哪种方法取决于PHP版本和个人偏好。

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

在PHP中管理并发会话访问可以通过以下方法:1.使用数据库存储会话数据,2.采用Redis或Memcached,3.实施会话锁定策略。这些方法有助于确保数据一致性和提高并发性能。

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

负载均衡会影响会话管理,但可以通过会话复制、会话粘性和集中式会话存储解决。1.会话复制在服务器间复制会话数据。2.会话粘性将用户请求定向到同一服务器。3.集中式会话存储使用独立服务器如Redis存储会话数据,确保数据共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP会话的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。1.Cookies通过在客户端存储数据来管理会话,简单但安全性低。2.Token-basedAuthentication使用令牌验证用户,安全性高但需额外逻辑。3.Database-basedSessions将数据存储在数据库中,扩展性好但可能影响性能。4.Redis/Memcached使用分布式缓存提高性能和扩展性,但需额外配

Sessionhijacking是指攻击者通过获取用户的sessionID来冒充用户。防范方法包括:1)使用HTTPS加密通信;2)验证sessionID的来源;3)使用安全的sessionID生成算法;4)定期更新sessionID。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器