AI 助教问 AI 助教
东方瑞通 · CISSP

跨站脚本(XSS)与 SQL 注入

XSS 向网页注入恶意脚本在受害者浏览器执行,SQL 注入向查询拼接恶意语句操纵数据库,二者都源于未充分验证输入。

考点精讲

  1. XSS(Cross-Site Scripting,跨站脚本)攻击者在网页中注入恶意脚本,受害者的浏览器执行该脚本,可窃取 Cookie、会话令牌或篡改页面;分反射型(Reflected,恶意脚本随请求即时回显,需诱导用户点击恶意链接)与持久型(Stored/Persistent,脚本被存储到服务器、其他用户访问时触发,危害最大)。SQL 注入(SQL Injection)攻击者在输入中拼接恶意 SQL 语句,操纵后端数据库查询,可窃取、篡改、删除数据甚至获取服务器权限。防御核心是输入验证(Input Validation)——对输入做白名单校验、长度与类型限制,以及参数化查询/预编译语句(彻底分离代码与数据)、存储过程、输出编码,并对数据库账户施加最小权限。

记忆技巧

记「XSS 打浏览器、SQL 注入打数据库」——XSS 是「塞脚本给别的用户跑」,SQL 注入是「塞语句给数据库跑」。
记两类 XSS:反射型「即时回显、需骗人点链接」、持久型「存进服务器、别的用户一访问就中招(危害最大)」。
防御口诀「所有输入都不信、参数化查询是根本」——白名单验输入 + 最小权限 + 存储过程。

常见误区

  • 把 XSS 当成「攻击服务器」——XSS 主要危害是「攻击其他用户的浏览器」。
  • 忽略存储型 XSS 的危害——它可让所有访问者中招,比反射型更严重。
  • 误以为客户端校验足够——客户端校验可被绕过,必须在服务端做输入验证。

真题思路

  • 【示例】 【示例】常考「某攻击场景属于反射型还是存储型 XSS」或「SQL 注入与 XSS 的防御手段」,参数化查询是 SQL 注入的核心防御。参考 Practice Tests 第 8 章(Domain 8)。

常见问题

Q:为什么参数化查询能防 SQL 注入?

A:它将 SQL 代码与用户数据分离,数据不再被当作代码执行。

Q:XSS 与 CSRF 有什么区别?

A:XSS 在受害者浏览器执行恶意脚本,CSRF 诱导受害者以已登录身份发起未授权请求。

Q:XSS 是攻击服务器吗?

A:不是,XSS 主要危害是「攻击其他用户的浏览器」。

Q:反射型和持久型 XSS 哪个更严重?

A:持久型更严重,它可让所有访问者中招;反射型需诱导用户点击恶意链接。

Q:客户端校验足够吗?

A:不够,客户端校验可被绕过,必须在服务端做输入验证。

相关知识

教材出处:Domain 8 · 软件开发安全 跨站脚本(XSS)与 SQL 注入

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑