🛡️ 第六章 组织机构的安全防范对策
📄 一句话概括

PCI DSS 不是法律,而是收单行与卡组织写进合同里的要求;2026 年唯一有效的版本是 v4.0.1,其中 51 项【未来生效要求】从 2025-03-31 起已全部强制。

📝 本节和前面几节的关系

6-5 讲的是【出事后怎么做】,这一节讲的是一个行业怎么把要求前置到合同里——PCI DSS 是本章里唯一一份【外部强制、且有明确罚款】的清单。 它和 4-5 有直接关系:这一节里最核心的两条新要求(支付页面脚本清单、篡改检测),针对的就是跨站脚本在支付场景里的变体——攻击者不碰你的服务器,只往你的支付页面塞一段脚本。

一、PCI DSS 是谁在要求你

先把主体关系弄清楚,这决定了它的约束力和执行方式:

【不是法律】这一点很重要,它带来两个实际影响:

二、版本现状:2026 年只有 v4.0.1 有效

版本这件事在 PCI DSS 里格外重要,因为版本切换直接决定【要做什么】:

版本 状态 时间点
v3.2.1 已退役 2024-03-31 退役
v4.0 已退役 2024-12-31 退役
v4.0.1 当前唯一有效 2024-06-11 发布
未来生效要求 已全部强制 2025-03-31 起 51 项全生效

两个细节要注意:

三、最有操作量的几项

所有要求里,下面这五项是企业最常喊疼的地方——因为它们都要求组织拿出【持续的、有流程的】证据,而不是一次性配置:

要求 内容
12.3.1 定向风险分析 允许灵活频次,但必须书面论证这个频次为什么够
MFA 全量覆盖 从仅远程与管理访问,扩到所有访问持卡人数据环境
6.4.3 支付页面脚本 页面上每个脚本都要有清单、有授权、有变更流程
11.6.1 篡改检测 支付页面脚本与 HTTP 头被改动要能告警
8.3.6 密码长度 下限从 7 位提到 12 位

6.4.3 和 11.6.1 值得单独解释,因为它们对应着一类特别阴险的攻击:

这类攻击的名字叫 Magecart(或叫表单劫持、e-skimming)。它的做法是:攻击者不入侵你的服务器,而是通过第三方脚本、被篡改的插件、或供应链环节,往你的支付页面上塞一段 JavaScript。这段脚本做的事很简单:在用户把卡片号填进表单、点提交的那一瞬间,先把数据复制一份发到攻击者控制的地址。

为什么这种攻击难防:① 从用户视角看,页面完全正常,地址栏是 HTTPS,证书没问题(5-8 讲过的局限在这里体现得很清楚:加密保护的是传输管道,而不是页面上的代码);② 从服务器视角看,你的代码没有被改,你要检查的是【页面上加载了哪些第三方脚本】,这份清单你往往并不完整。

所以 6.4.3 要求的就是【先有清单】:页面上每个脚本都要有出处、有授权、有变更流程;11.6.1 要求【有变化要告警】:脚本内容或 HTTP 头在未经授权的变更之后,要能被检测出来。这两条合起来,等于把【支付页面上跑着哪些代码】变成一件受管的事。

四、商户分级:先知道自己属于哪一级

合规工作的第一步不是【做什么】,而是【我属于哪一级】——因为级别直接决定评估方式和成本:

级别 判定条件 评估方式
L1 年交易 > 600 万笔(任何渠道) QSA 现场评估,出 ROC
L2 年交易 100 万 ~ 600 万笔 通常 SAQ + 季度 ASV 扫描
L3 纯电商 2 万 ~ 100 万笔 SAQ A / A-EP + 季度 ASV 扫描
L4 其余情况,含电商 < 2 万笔 SAQ A + 季度 ASV 扫描

这张表里有两个容易踩的点:

五、动手 Demo:给一笔交易量定级

def level(vol, ecom):
    if vol > 6000000:
        return "L1", "QSA 现场评估(ROC)"
    if vol > 1000000:
        return "L2", "SAQ + 季度 ASV 扫描"
    if ecom and vol >= 20000:
        return "L3", "SAQ A / A-EP + 季度 ASV 扫描"
    return "L4", "SAQ A + 季度 ASV 扫描"

cases = [(12000000, True), (3000000, False), (500000, True),
         (80000, True), (15000, True), (900000, False)]

实跑输出:

五、给一笔交易量,判定它属于哪一级
  年交易笔数      是否电商    判定级别    主要工作
  12,000,000      是          L1          QSA 现场评估(ROC)
  3,000,000       否          L2          SAQ + 季度 ASV 扫描
  500,000         是          L3          SAQ A / A-EP + 季度 ASV 扫描
  80,000          是          L3          SAQ A / A-EP + 季度 ASV 扫描
  15,000          是          L4          SAQ A + 季度 ASV 扫描
  900,000         否          L4          SAQ A + 季度 ASV 扫描
  → 同一家公司,线上线下渠道的交易量要合并计算后再定级。

读这个输出:

六、⚠️ 2026 现状

30 秒实验

今天做两个动作,各 15 秒:

  1. 打开一个你常用的电商或订餐 App,进入支付页面,看它加载了多少个第三方脚本。 手机上看不到的话,用浏览器的开发者工具看网络请求。数出来的数量通常会让人意外——这就是 6.4.3 要求【脚本清单】的原因:不数一遍,你根本不知道页面上跑着谁的东西。
  2. 看它地址栏与页面内容是否一致:地址栏锁标正常,不代表页面代码没问题。如果页面里有大量来自不同域名的脚本,那么这个页面的实际信任范围远超你的想象——任何一家脚本提供方被攻破,都会影响到这个支付页面。

这一节要带走的一句是:PCI DSS 的价值不在于它列了多少条要做的动作,而在于它把【支付场景下的安全】变成了有清单、有评估、有合同后果的事——它不依赖你的自觉。

常见误区

  1. 错误:PCI DSS 是法律规定,不做就是违法。——纠正:PCI DSS 是行业标准,不是法律法规;它的强制力来自收单行与卡组织的合同。这个区别有实际意义:① 执行主体不同——罚款与处罚由收单行按合同执行,不是由监管机关作出;② 适用范围不同——它管的是【涉及持卡人数据的部分】,而不是整个组织的所有系统(这也是很多要求的适用范围写作【持卡人数据环境】的原因);③ 协商空间不同——整改期限、评估方式、补偿措施通常可以在合同层面沟通。但要注意:【不是法律】不等于【可以为所欲为】——个人信息保护法、网络安全法在这件事上仍有强制要求,而且泄露持卡人数据还涉及对持卡人的民事责任。准确的说法是:PCI DSS 是【合同 + 行业标准】这一层的要求,与其他法律要求叠加存在,而不是替代。

  2. 错误:把支付页面托管给第三方收银台,自己就不用管 PCI DSS 了。——纠正:要看【支付页面在谁的域名下、卡片数据经过谁的系统】。 SAQ A 之所以最轻,前提是全部支付处理都外包、自己的系统不接触卡片数据。 但现实中有一条界线经常被跨过:如果支付页面上仍然加载了你自己的脚本(统计、营销、客服插件),那么页面就仍然是你的控制范围——这正是 6.4.3 与 11.6.1 出现的原因,它们对 SAQ A 的商户同样适用。 判断方法很直接:问一句【用户输入卡片号的那一刻,数据经过了哪些域】——答案里出现的任何一方,都是这条链上必须被评估的一环。

  3. 错误:年度评估做完了,今年就没事了。——纠正:PCI DSS 里相当多的要求本质上是【持续动作】,不是【年度状态】。最典型的三个:① 季度的外部漏洞扫描(ASV)——不是每年做一次就行;② 12.3.1 的定向风险分析——允许灵活频次,但必须书面论证【为什么这个频次足够】,一般没有人会论证【一年一次足够】;③ 日志留存与监控(6-10 会展开)本身就是持续运行的要求。换句话说,PCI DSS 的合规状态更像【体检 + 日常保养】,而不是【年检合格证】。 变化(新增系统、换支付服务商、上线新营销脚本)会重新拉高要求,改完之后要重新评估,而不是等下一个评估周期。

  4. 错误:既然有罚款,那说明只要肯付钱就行。——纠正:罚款只是最轻的一层后果,真正的风险在业务连续性上。按顺序看:罚款(每月 5,000 ~ 100,000 美元)→ 手续费上调 → 被暂停受理(收入归零)→ 卡组织层面的黑名单(可能影响到其他业务)。其中【暂停受理】是最难接受的一档:它直接切断收入,而且恢复需要重新走评估流程,不是交完罚款就能回来的。 另一个常被忽略的代价是品牌与客户信任:支付数据泄露的客户流失,往往比一次合规投入更贵。 所以正确的算法是:合规投入 vs(停机损失 + 客户流失 + 罚款)——而不是【合规投入 vs 罚款】。

自测三问(点开对答案) 1. 为什么 Magecart 这类攻击【HTTPS 和证书都正常】,却仍然能偷走卡片数据? —— 因为**证书保护的是【传输管道】,而不是【页面上的代码】**。**浏览器挂锁的含义是:你与这个域名之间的通信是加密的、域名是经过验证的**——**它并不检查这个页面上运行的 JavaScript 是谁写、要做什么。** **Magecart 的做法恰好利用这个缝隙**:**页面是合法的、证书是有效的、用户看到的一切都正常**,**只是在表单提交的那一瞬间,有一段被注入的脚本先把数据复制一份发走。** **从【管道】的角度看,数据是安全地送到了攻击者的服务器**——**因为那段通信本身也是加密的。** **这就是为什么 PCI DSS 要在【页面内容】这一层加要求(6.4.3 脚本清单、11.6.1 篡改检测)**,**而不再依赖传输层**。**它和 5-8 讲的【挂锁管的是管道不是人】是同一个道理,只是在这里被用来做了一件很赚钱的事。** 2. 12.3.1 允许【灵活频次】,那是不是可以定得很低? —— **技术上允许,但必须有书面论证,而论证的难度随频次降低而急剧上升**。**这一条的设计意图是**:**不同组织的风险不同,标准不强行规定【每月做什么】,而是要求你根据风险自己决定频次——同时把【为什么这么定】写下来,接受评估。** **写这份论证时通常要考虑四件事**:**① 环境的变动频率**(组件、配置、外部接口多久变一次);**② 该风险在历史上是否发生过**;**③ 现有其他控制能在多大程度上覆盖它**;**④ 如果这个控制失效,损失量级多大。** **【一年一次】通常很难论证通过**,**因为这四条里几乎没有哪一条支持这么低的频次**。**反过来说,一份写得很好的论证,可以让【每季度做一次】变得完全站得住**——**这也正是【灵活】的真实含义:不是可以省,而是可以按风险定,但要能说得清。** 3. 商户级别(L1~L4)会不会因为业务变化而变化?变化之后要做什么? —— **会,而且变化是常见的**。**最典型是两种**:**① 交易量跨过断点**——**比如从 60 万笔涨到 120 万笔(从 L3 进 L2),或者涨过 600 万笔(进 L1,须 QSA 现场评估)**;**② 渠道变更**——**原来只有电商,现在开了线下门店,交易量要合并计算。** **变化之后要做的事,按顺序通常是**:**重新确认级别 → 更新适用的 SAQ 类型 → 检查原来依赖【低级别】而没做的动作(比如现场评估、季度 ASV)是否必须补上 → 通知收单行。** **一个容易遗漏的点是【渠道合并】**:**很多组织只盯着【线上那部分涨了多少】,而忽略了【总交易量】这个概念里本来就包含其他渠道。** **实务建议是把【交易量定期复核】写进合规日历**——**每年至少核对一次总笔数,避免在不知不觉中升了级却没按对应级别执行。**

相关笔记