Web 应用安全基础(注入/XSS/CSRF/SSRF)

共 19 题
📑 题目列表 19 题
#
★★★

1. SQL 注入的成因与危害是什么,为什么参数化查询/预编译语句能从根上防御而字符串拼接不能?

SQL 注入产生的根本原因是什么,它会造成什么危害?为什么参数化查询或预编译语句能够从根上防御 SQL 注入,而字符串拼接方式则不能?

  • SQL 注入的成因:用户输入被当作 SQL 命令的一部分拼接执行
  • 参数化/预编译语句将数据与代码分离的原理
  • 字符串拼接导致攻击者控制语法结构的本质

SQL 注入的成因是程序把外部输入直接拼接进 SQL 语句,使输入中的单引号、分号、注释符等被解释为 SQL 语法而非数据。攻击者构造 ' OR '1'='1'; DROP TABLE users; -- 这类输入即可绕过鉴权、篡改数据、越权读取甚至执行系统命令。危害包括数据泄露、数据篡改、权限提升、拒绝服务乃至整库沦陷。参数化查询(Prepared Statement)先把 SQL 模板发给数据库完成解析与编译,之后再用占位符绑定参数值,此时数据库把参数严格当作字面量数据处理,不再参与语法解析,因此无法注入。字符串拼接方式则让用户输入在编译前就进入 SQL 文本,攻击者可改变语句结构,本质上是"数据与代码未分离"。

核心在于"编译时"与"运行时"的分离。预编译在参数进入前就固定了 SQL 结构,注入只能停留在数据层,构不成语法。这是结构性防御,而非对输入做黑名单过滤等"堵"式手段,所以能根除该漏洞。

# 不安全:字符串拼接
user = request.form['username']
sql = "SELECT * FROM users WHERE name = '" + user + "'"
cursor.execute(sql)

# 安全:参数化查询
sql = "SELECT * FROM users WHERE name = %s"
cursor.execute(sql, (user,))
#
★★★

2. XSS 的存储型、反射型、DOM 型三类有何差异,输出编码、CSP 与 HttpOnly 分别防御哪一类?

存储型、反射型、DOM 型三类 XSS 攻击的差异是什么?输出编码、CSP 与 HttpOnly 这三种防御手段分别针对哪一类、解决什么问题?

  • 三类 XSS 的触发时机与数据来源
  • 输出编码(编码 HTML 实体)防御反射型与存储型
  • CSP 全局限制脚本执行;HttpOnly 防 Cookie 窃取

存储型 XSS 将恶意脚本持久化到服务器(如评论区、用户名),任何浏览该页面的用户都中招,危害最大;反射型 XSS 把脚本反射在 URL 参数中并立即回显,需诱导用户点击恶意链接;DOM 型 XSS 不经过服务器,恶意输入在浏览器端通过 DOM 操作(如 innerHTMLeval)被写入页面,纯前端问题。输出编码(对 <>&"' 等做 HTML 实体转义)在服务端渲染处编码,可防御存储型与反射型;CSP(Content-Security-Policy)通过 script-src 白名单禁止内联脚本与外部不可信脚本执行,可对所有类型提供纵深兜底;HttpOnly 让 JS 无法读取 Cookie,专门堵住 XSS 窃取会话 Cookie 的路径,但无法阻止 XSS 本身执行其他操作。

三类 XSS 的根本差异是"恶意内容从哪来、在哪被渲染"。防御分层:编码在源头净化数据,CSP 在浏览器端限制执行,HttpOnly 保护会话凭据。三者组合而不是互斥。

#
★★★

3. CSRF 攻击的利用条件是什么,CSRF Token、SameSite Cookie、双重提交 Cookie 三种防御的机制与局限?

CSRF 攻击需要满足哪些利用条件?CSRF Token、SameSite Cookie、双重提交 Cookie 三种防御方案的机制与各自局限是什么?

  • CSRF 利用条件:受害者已登录、目标站无状态校验、请求携带带凭证的 Cookie
  • CSRF Token 的随机性与服务器校验
  • SameSite Cookie 的 Lax/Strict 语义与浏览器兼容

CSRF 攻击利用浏览器自动携带目标站 Cookie 的特性,让受害者在不知情的情况下向已登录的站点发起伪造请求(如转账、改密)。利用条件:受害者已登录目标站、目标站请求仅凭 Cookie 鉴权、攻击者能伪造请求格式。CSRF Token 是服务器随机生成并下发给页面的令牌,请求必须携带且与服务器 session 中的值一致,攻击者无法获知 Token 故无法伪造,局限是需要维护会话状态;SameSite Cookie 通过浏览器强制限制跨站请求携带 Cookie,Strict 完全不携带、Lax 允许顶层导航的 GET 请求携带,可一键缓解大量 CSRF,局限是依赖浏览器支持且对 GET 类副作用仍有风险;双重提交 Cookie 把随机 Token 同时写入 Cookie 与请求头/表单,服务器对比两者是否一致来判断,无需服务端存储,局限是子域被攻破时仍可伪造 Cookie 值。

三种方案本质都在回答"这个请求是否来自可信来源"。Token 靠不可预测性,SameSite 靠浏览器策略,双重提交靠来源一致性。实践中常组合使用并叠加 SameSite 作为纵深。

#
★★★

4. SSRF 攻击为什么危险,服务端如何被利用访问内网,URL 白名单、DNS 重绑定防护与出网限制如何落地?

SSRF 攻击为什么危险?服务端如何被利用去访问内网资源?URL 白名单、DNS 重绑定防护与出网限制这几种防护手段如何落地?

  • SSRF 利用服务端发起的请求去访问内网/元数据服务
  • URL 白名单与协议校验
  • DNS 重绑定(rebinding)绕过原理

SSRF(服务器端请求伪造)让攻击者通过存在 URL 参数的功能(如图片代理、Webhook)诱导服务端去请求攻击者指定的地址,从而访问防火墙保护的内网服务、云元数据接口(如 169.254.169.254 上的 AWS IAM 凭证)或内网管理端口,实现横向渗透与凭证窃取,危险在于借用了服务端可信的网络位置。防护:URL 白名单只允许解析结果落在可信域名/IP 段,并校验协议仅允许 http/https;DNS 重绑定防护要求在请求前解析后再校验,且解析与连接使用同一 IP(或禁用重定向、限制返回 IP 数量),防止攻击者先解析成合法 IP 通过校验、再返回内网 IP;出网限制在网络层用防火墙/ACL 阻断服务端到内网与元数据网络的出站访问,作为纵深兜底。

SSRF 的根因是"服务端发起请求时未能校验目标地址的可信性"。防护要同时落在应用层(URL 校验)与网络层(出网限制),并在解析/连接之间消除 TOCTOU 窗口。

#
★★★

5. 越权(IDOR/BOLA)为何属于"失效的访问控制",水平越权与垂直越权的区别,最小权限如何系统化落地?

越权(IDOR/BOLA)为什么属于"失效的访问控制"?水平越权与垂直越权的区别是什么?最小权限如何系统化落地?

  • IDOR 的定义与成因
  • 水平越权(同级横向)与垂直越权(跨级提权)的区别
  • 最小权限的授权模型与对象级授权校验

IDOR(Insecure Direct Object Reference,不安全的直接对象引用)指应用直接暴露对象标识(如用户 ID、订单号)而未校验访问者是否有权访问该对象,导致攻击者枚举 ID 即可横向读取他人数据,属于 OWASP 的"失效的访问控制"类。水平越权是同级用户之间越权(用户 A 访问用户 B 的数据),垂直越权是低权限用户访问高权限功能(普通用户调用管理员接口)。最小权限系统化落地包括:服务端在每个对象访问入口做对象级授权(Object-Level Authorization)校验,而非仅依赖前端隐藏;用 RBAC/ABAC 定义角色与资源关系和上下文策略;默认拒绝、白名单授权;对每个 API 做归属校验(当前用户是否是该资源 owner)。

越权本质是"信任了请求参数中的对象 ID 而未校验授权关系"。防御必须在服务端逐对象校验"当前主体对这个对象是否有权",这正是最小权限原则在对象粒度上的体现。

#
★★★

6. 为什么 HTTPS 无法防御 XSS/CSRF,TLS 保护传输机密性,应用层信任边界问题如何仍然存在?

为什么 HTTPS 无法防御 XSS 和 CSRF?TLS 保护的是传输机密性,为什么应用层的信任边界问题依然存在?

  • TLS 的职责边界:加密传输、防篡改、防窃听
  • XSS/CSRF 是应用层逻辑与信任边界问题
  • 传输安全与应用安全的分层

HTTPS 通过 TLS 加密传输,保护的是数据在信道上的机密性、完整性与对端身份认证,防止中间人窃听、篡改。但 XSS 是应用未对输入输出做编码、把不可信内容当作脚本执行的问题,CSRF 是应用未校验请求来源、信任了浏览器自动携带的 Cookie 的问题,二者都发生在应用层逻辑与信任边界上,与传输是否加密无关——即使全站 HTTPS,只要前端渲染了攻击者输入、后端未校验来源,攻击依然成立。TLS 无法解决"应用本身是否正确地信任提交者"。

这是安全分层思想:HTTPS 解决"信道安全",XSS/CSRF 属于"应用安全"。两者正交,HTTPS 只是应用安全的前提而非替代。必须在应用层做输入输出编码、来源校验、会话管理。

#
★★

7. 文件上传漏洞有哪些绕过方式(扩展名、MIME、内容头、双扩展名),白名单校验加存储隔离如何防御?

文件上传漏洞有哪些绕过方式(扩展名、MIME、内容头、双扩展名等)?白名单校验加存储隔离如何实施防御?

  • 常见绕过:可执行扩展名、MIME 伪造、内容头、双扩展名、空字节
  • 白名单校验(服务端扩展名白名单)
  • 存储隔离:放非 Web 可执行目录、随机文件名、Content-Disposition

常见绕过方式包括:提交可执行扩展名(如 .php.jsp)或黑名单未覆盖的变体(.php5.phtml);伪造 MIME 类型让前端校验通过;伪造文件内容头(GIF89a 图片头)欺骗内容检测;用双扩展名 shell.php.jpg 或空字节 shell.php%00.jpg 利用解析器特性;配合解析漏洞(如 IIS 分号、Apache 多扩展名)触发执行。防御应使用服务端扩展名白名单(仅允许图片/文档等安全类型),并检查真实文件内容(magic bytes)、限制大小;存储隔离把文件放到不可被 Web 服务器直接执行解析的目录,用随机生成的不可猜测文件名,通过 Content-Disposition 强制下载而非内联执行,内容检测与存储解析分离。

黑名单永远枚举不全,白名单才可控。核心是"上传文件不得落在可执行路径"——既不信任扩展名,也不让文件落在 Web 可执行目录或可执行命名。

#
★★

8. 命令注入与代码注入(RCE)的利用与防御差异,白名单命令、参数化与最小权限如何组合使用?

命令注入与代码注入(RCE)在利用与防御上有何差异?白名单命令、参数化与最小权限如何组合使用?

  • 命令注入:拼接系统命令,防御用参数化/entrypoint 白名单
  • 代码注入:注入到解释器(语言/模板),防御用参数化与沙箱
  • 最小权限降低注入后的危害

命令注入(OS Command Injection)指用户输入被拼进 shell 命令,攻击者用 ;|&&$(...) 等分隔符执行任意命令,防御应避免拼接,改用参数化执行(如 exec 数组参数、不经过 shell),并对命令做白名单;代码注入(Code/RCE)把输入注入到语言解释器或模板引擎(如 evalExpression Language、Freemarker),实现任意代码执行,防御应避免 eval 执行不可信输入、对模板表达式做参数化并在沙箱中运行。两者组合防御:命令/入口白名单限定可执行目标,参数化消除注入点,最小权限(独立低权限账号、seccomp、容器、网络隔离)保证即便注入成功也无法获得高权限或横向移动。

命令注入与代码注入的差异体现在注入目标(shell vs 解释器),但防御逻辑一致:避免把不可信输入置于可执行上下文中,并用最小权限做纵深兜底。

#
★★

9. 反序列化漏洞为何可导致远程代码执行,Java/Python 的常见攻击面与"不反序列化不可信数据"原则?

反序列化漏洞为什么可导致远程代码执行?Java 与 Python 的常见攻击面有哪些?"不反序列化不可信数据"原则如何理解?

  • 反序列化调用魔法方法/入口点触发代码执行
  • Java gadget chain(如 ysoserial)、Python pickle 攻击面
  • 不可信数据不反序列化与白名单、签名校验

反序列化把二进制/文本数据还原为对象,过程中会调用对象类的特殊方法(如 Java 的 readObjectreadResolve,Python pickle 的 __reduce__),攻击者构造恶意序列化流,借助应用中存在的"gadget chain"(一组可被链式调用的类方法)在反序列化时触发任意代码执行。Java 攻击面常见于依赖 Commons Collections、Spring 等库的反序列化点(如 RMI、JMX、HTTP 反序列化接口),工具如 ysoserial 可生成 payload;Python 的 pickle__reduce__ 中直接指定任意可调用对象,yaml.load 等隐式反序列化同样危险。核心原则是"不反序列化不可信数据"——只反序列化自己签名/加密过、来源可信的数据,并对不可信输入改用安全格式(如 JSON 只反序列化到明确类型),配合组件版本升级与白名单类校验。

反序列化漏洞的根因是"把不可信字节流当作可信代码路径入口"。攻击者掌控的对象字段会驱动类方法执行,因此唯一可靠手段是从源头阻断不可信数据进入反序列化器。

#
★★

10. 开放重定向与点击劫持(Clickjacking)的利用方式,X-Frame-Options/CSP frame-ancestors 如何防御?

开放重定向与点击劫持(Clickjacking)的利用方式是什么?X-Frame-Options 与 CSP frame-ancestors 如何防御?

  • 开放重定向:跳转参数未校验,用于钓鱼
  • 点击劫持:iframe 透明覆盖,诱导点击
  • X-Frame-Options 与 CSP frame-ancestors 防御被嵌入

开放重定向指应用把跳转目标参数(如 ?next=?redirect=)直接用于 Location 跳转而未校验目标,攻击者构造恶意链接把用户重定向到钓鱼站,或被用于 OAuth 流程窃取授权码。点击劫持把目标站透明地嵌入自己的 iframe,通过 CSS 覆盖使常驻元素与用户点击位置错位,诱导用户点击"隐形按钮"完成转账、发帖等操作,属于视觉欺骗。防御:X-Frame-Options 响应头(DENY/SAMEORIGIN)禁止或限制当前页面被嵌入 iframe;CSP 的 frame-ancestors 指令更精确地声明允许的父页面来源,并配合 frame-src 控制页面可嵌入的帧;对重定向参数做白名单(仅允许站内/可信域名)。

开放重定向与点击劫持都属于"信任了浏览器/来源的视觉与跳转行为"。X-Frame-Options 与 frame-ancestors 从"能否被嵌入"层面消除点击劫持,重定向白名单消除开放重定向。

#
★★

11. 会话固定攻击的原理,为什么登录后应更换会话 ID,Session 与 Cookie 属性如何配合加固?

会话固定攻击的原理是什么?为什么登录后应更换会话 ID?Session 与 Cookie 属性如何配合加固?

  • 会话固定:攻击者先设置会话 ID 再诱导受害者登录
  • 登录成功后更换会话 ID 打破固定
  • Session 失效、Cookie 属性(Secure/HttpOnly/SameSite)加固

会话固定(Session Fixation)中,攻击者预先确定一个会话 ID 并诱导受害者以该 ID 登录(通过 URL 参数、Cookie 注入或子域),受害者登录后攻击者仍持有该会话 ID,从而直接接管会话。防御的核心是登录成功时必须生成新的会话 ID 并让旧 ID 失效,切断"攻击者预置 ID 与受害者认证结果"的绑定。配合加固:会话设置合理超时并主动失效;Cookie 设置 Secure(仅 HTTPS 传输)、HttpOnly(防 XSS 读取)、SameSite(防跨站携带);会话 ID 使用高强度随机值,登录后重新生成,并在登出时服务端销毁会话。

会话固定的根因是"认证前后会话 ID 未更换,攻击者预置的 ID 可延续到认证后"。更换 ID 让攻击者预置的 ID 失效,这是会话固定与一般的会话劫持(窃取 ID)处理方式的差异。

#
★★

12. 安全响应头(CSP、HSTS、X-Content-Type-Options、Referrer-Policy)各自防护什么风险?

CSP、HSTS、X-Content-Type-Options、Referrer-Policy 这四个安全响应头各自防护什么风险?

  • CSP 限制脚本加载与执行
  • HSTS 强制 HTTPS
  • X-Content-Type-Options 防 MIME 嗅探

CSP(Content-Security-Policy)通过指令限制页面可加载的脚本、样式、图片等来源,阻止内联脚本与不可信域脚本,缓解 XSS 与数据注入;HSTS(Strict-Transport-Security)告知浏览器强制使用 HTTPS 访问本域,并缓存该策略,防止 SSL 剥离与中间人降级;X-Content-Type-Options: nosniff 禁止浏览器对响应做 MIME 类型嗅探,防止把上传的 HTML/脚本以错误类型执行(缓解存储型攻击中的内容嗅探);Referrer-Policy 控制页面在跳转时携带 Referer 的粒度,no-referrer/strict-origin-when-cross-origin 可防止在跨站跳转中泄露 URL 中的敏感参数(如 token)。

这些安全响应头在浏览器侧收紧默认行为,是低成本、高收益的纵深防御项。它们与传输层、应用层编码共同构成"纵深防御"的不同层次。

#
★★

13. 目录穿越(Path Traversal)漏洞如何读取任意文件,为什么必须对路径做规范化后再校验?

目录穿越(Path Traversal)漏洞如何实现读取任意文件?为什么必须对路径做规范化后再进行校验?

  • 路径穿越利用 ../ 等绕过目录限制
  • 规范化(realpath/canonicalize)消除 ..、符号链接、编码
  • 校验必须基于规范化后的真实路径

目录穿越漏洞中,应用把用户可控的路径直接拼接到文件系统路径,攻击者用 ../../etc/passwd..%2f..%2f(URL 编码)、绝对路径或符号链接穿越到受保护目录之外,读取任意文件。防御必须"先规范化再校验":规范化(如 realpath/canonicalize)把 ..、相对路径、URL 编码、符号链接都解析为真实绝对路径,再检查规范化后的路径是否位于允许的根目录内。若直接对原始字符串做前缀匹配即可被 ../ 或编码绕过;若先规范化再校验,任何穿越都会在规范化后暴露并被拦截。

关键是把"路径字符串"与"真实文件路径"之间的差异消除。规范化后的路径才是文件系统实际访问的目标,校验它才安全。此外还应限制文件访问权限、避免让用户直接提供路径。

#
★★

14. 为什么客户端校验不可信,前端校验、服务端校验与数据库约束三层各防御什么,纵深防御如何组织?

为什么客户端校验不可信?前端校验、服务端校验与数据库约束三层各自防御什么?纵深防御如何组织?

  • 客户端校验可被绕过,仅用于体验
  • 服务端校验是安全边界
  • 数据库约束作为最后兜底

客户端校验(前端 JS)运行在用户浏览器,可被攻击者直接绕过或修改,因此只能改善用户体验、不能作为安全边界。安全校验必须放在服务端:服务端校验输入格式、合法性、权限与业务约束,是真正的安全底线。数据库约束(非空、唯一、外键、CHECK、类型)作为最后兜底,保证即使上层逻辑有漏洞,数据层仍保持一致性,防止脏数据与部分越界写入。纵深防御让三层各司其职:前端负责及时反馈,服务端负责强制校验,数据库负责兜底约束,当上一层被绕过时下一层仍能拦截。

一切来自客户端的数据都不可信。纵深防御的本质是"不把安全寄托在单一环节",每一层都是独立防线,防护效果不因上层失效而崩塌。

#
★★

15. 业务逻辑漏洞,越权批量操作、优惠重放、验证码绕过等逻辑缺陷为何难以被自动化扫描发现,测试与审计如何覆盖?

越权批量操作、优惠重放、验证码绕过等业务逻辑漏洞为何难以被自动化扫描发现?测试与审计如何覆盖?

  • 业务逻辑漏洞依赖业务语义,无固定模式
  • 自动化扫描只能识别通用签名漏洞
  • 人工测试、业务用例评审、状态机与审计日志

业务逻辑漏洞(如越权批量操作、优惠码重放、验证码绕过、金额精度、支付顺序等)依赖业务规则与语义,没有统一的技术签名,自动化扫描工具只能发现模式化漏洞(如注入、路径穿越),无法理解"多次领取优惠是否合法""订单状态可否跳变"这类业务合理性。因此它们难以被黑盒扫描发现。覆盖方式:业务导向的用例设计(针对状态机、权限矩阵、金额边界做等价类与边界测试)、安全评审在开发期审查业务规则、异常路径与并发竞争测试、渗透测试由熟悉业务域的人手动执行,并结合变更审计日志与告警来发现异常批量操作。

逻辑漏洞是"实现正确但业务语义错误"。发现它需要理解业务,而非依赖通用工具。应在需求阶段梳理威胁模型,用状态机与权限矩阵刻画业务,再针对性测试。

#
★★

16. 信息泄露与错误处理,调试信息、堆栈、版本号与敏感字段在响应中泄露的路径,统一错误响应与日志分级如何落地?

调试信息、堆栈、版本号与敏感字段在响应中泄露的路径有哪些?统一错误响应与日志分级如何落地?

  • 错误信息泄露堆栈、路径、版本、SQL 等
  • 敏感字段(密码、token、身份证)在响应中泄露
  • 统一错误响应、日志分级与脱敏

信息泄露路径包括:未统一处理的异常把堆栈、文件路径、SQL、依赖版本号回显给客户端;调试模式(debug)在生产打开;日志中记录敏感字段(密码、token、身份证);接口返回多余的敏感字段(如用户对象序列化泄露密码哈希)。这些信息可被攻击者用于漏洞侦察与社工。落地措施:统一错误处理,对外只返回通用错误码与提示,不暴露内部细节;日志分级记录(debug/info/warn/error),敏感字段脱敏(掩码)并禁止写入明文密码;生产环境关闭 debug、隐藏版本号;响应对象按需选择字段(不整对象序列化)。

信息泄露是"最小暴露"原则的体现——对外只暴露必要信息。统一错误处理配合日志脱敏把"对外表现"与"内部诊断"分离。

#
★★

17. 认证与会话管理的组合,登录限流、验证码、密码策略与会话失效如何组合,防止暴力破解与会话劫持?

登录限流、验证码、密码策略与会话失效如何组合,以防止暴力破解与会话劫持?

  • 登录限流与验证码防暴力破解
  • 密码策略(强度、哈希、加盐)
  • 会话失效与 Cookie 属性防劫持

防暴力破解:登录限流(按 IP/账号/设备维度限制失败次数并递增退避)、验证码/CD(人机验证)在多次失败后介入、图形验证码干扰自动化。密码策略:要求足够强度、强制使用强哈希(如 bcrypt/argon2)加盐存储、禁止明文与弱口令、防撞库(监控令牌复用、检查已知泄露库)。防会话劫持:会话 ID 高强度随机、登录后更换 ID、Cookie 加 Secure/HttpOnly/SameSite、会话超时与登出失效、异常登录检测(设备/地理位置/IP 变化告警)。组合使用让各层相互补位:限流+验证码拖慢暴力破解,密码哈希+策略防离线破解与凭证复用,会话管理防劫持。

单一措施都可被绕过,组合形成纵深。限制攻击速度(限流/CD)、增加攻击成本(强哈希)、缩小攻击面(会话加固)三管齐下。

#
★★

18. 重放攻击与幂等,支付、下单等敏感操作如何用 nonce/时间戳/一次性令牌防重放,与接口幂等设计的关系如何?

支付、下单等敏感操作如何用 nonce、时间戳、一次性令牌防止重放攻击?与接口幂等设计的关系是什么?

  • 重放攻击:重复提交已成功请求
  • nonce/一次性令牌/时间戳防重放机制
  • 幂等设计:同一请求多次执行结果一致

重放攻击指攻击者截获一次合法请求后原样重放,使支付/下单被重复执行。防重放通过为请求绑定一次性随机值 nonce(或一次性令牌)——服务端记录已用 nonce 并拒绝重复,或用时间戳+窗口校验请求新鲜度(过期拒绝),或用一次性票据保证"只能使用一次"。幂等设计则让同一请求(同一幂等键)多次提交结果一致:服务端以幂等键(如订单号)去重,首次执行、后续请求直接返回已处理结果,自然免疫重放。防重放与幂等相辅相成:nonce 是一次性防重放,幂等键是"重复无害化",两者都让重复请求失效或无害。

防重放关注"同一请求不能重复生效",幂等关注"重复请求结果一致"。对写操作,用幂等键+服务端去重既能防重放也能保证语义正确。

#

19. 身份认证的常见薄弱点,弱口令、凭证复用、暴力破解与撞库,多因素认证(MFA)为何是底线措施?

身份认证有哪些常见薄弱点(弱口令、凭证复用、暴力破解与撞库)?多因素认证(MFA)为什么是底线措施?

  • 弱口令与凭证复用
  • 暴力破解与撞库攻击
  • MFA 增加第二因子,弥补口令缺陷

常见薄弱点:弱口令(123456password)被轻易猜中;凭证复用(同一密码多处使用)使一处泄露殃及他处;暴力破解(穷举密码)与撞库(用泄露的账号密码库批量尝试登录)利用用户的弱口令与复用习惯突破认证。MFA(多因素认证)要求"知(密码)+ 有(硬件令牌/手机)/ 是(生物特征)"多个因子,即使口令被破解或泄露,攻击者仍缺少第二因子,无法完成认证,因此是底线措施。它把"口令泄露"转化为"仍无法登录",显著提升攻击成本。

口令本身作为唯一因子不可靠(易猜、易复用、易泄露)。MFA 通过引入独立因子,使攻击者必须同时攻破多个因素,把单点脆弱变成强认证。