XSS跨站脚本攻击入门教程

OWASP Top 10里,XSS和SQL注入是一对老搭档,一个打数据库,一个打浏览器。今天把XSS的入门知识摊开讲讲,刚接触Web安全的朋友可以按这个框架往下学。
先说原理。XSS的全称是跨站脚本攻击,攻击者把恶意脚本注入到网页里,其他用户浏览这个页面时,脚本在浏览器里执行,轻则弹个框,重则偷cookie、劫持会话、钓鱼转账。和SQL注入打服务端不同,XSS的伤害发生在用户的浏览器端,这是两者本质的区别。
类型必须分清楚。教科书上分三类:反射型,恶意脚本藏在URL参数里,服务器原样返回执行,常见于搜索页,需要诱骗用户点链接;存储型,脚本被存进数据库,每个访问页面的用户都中招,危害更大,常见于评论区、留言板;DOM型,全程不经过服务器,前端JavaScript直接把参数写进页面触发。面试考这三类的区别,答不上来的基本直接出局。
学习顺序建议这样走。第一步练payload,从最基础的alert弹窗开始,理解标签、事件属性、编码变形这些载体。第二步学编码绕过,HTML实体编码、URL编码、大小写混淆、双写绕过,靶场里都有对应关卡。第三步理解利用场景,怎么用document.cookie偷会话,怎么配合平台接收cookie,键盘记录和钓鱼页面什么原理。知道能干什么,你才知道要防什么。
防范方面记四个要点。输入过滤不等于全部转义,关键是输出编码——数据输出到HTML里用实体编码,输出到JavaScript里用转义,输出到URL里做URL编码,看场景下菜。Cookie加HttpOnly防止脚本读取,CSP内容安全策略限制脚本来源,再加上框架自带的转义机制,多层防御才稳。
练习环境老规矩,只打靶场不打真实站。自己搭DVWA这类开源靶场最方便,想系统练就跟着课程走,比如润天教育的Web安全阶段,XSS是按"原理—分类—payload构造—编码绕过—利用与防范"的顺序在靶场里逐层推进的,课后还有SRC漏洞挖掘的指导,挖到的合规提交,经历能直接写进简历。
XSS单看不难,难的是绕过和实战组合拳。给自己定个验收标准:三类XSS都能说清触发流程,能手工构造至少五种变形payload,能讲明白HttpOnly和CSP各自的防护边界,到这个程度,XSS就算真正入门了。剩下的深度,到真实项目里慢慢磨。