一篇带你了解什么叫做 XSS

发布时间:2026/9/8 17:17:58
一篇带你了解什么叫做 XSS XSS简介1XSS简介XSS作为OWASP TOP 10之一。XSS中文叫做跨站脚本攻击Cross-site scripting本名应该缩写为CSS但是由于CSSCascading Style Sheets层叠样式脚本重名所以更名为XSS。XSS跨站脚本攻击主要基于javascriptjs来完成恶意的攻击行为。XSS是一种经常出现在web应用中的计算机大全漏洞也是web中最主流的攻击方式。那么什么是XSS呢XSS是指恶意攻击者利用网站对用户提交的数据进行转义处理或者过滤不足的缺点进而添加一些代码嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者访问者进行病毒侵害的一种攻击方式。2XSS原理利用我们所知道的各种黑魔法向web页面插入js代码让js代码可以被浏览器执行访问该页面 的用户则被攻击。3XSS的危害针对用户 窃取cookie劫持的会话 网络钓鱼 放马挖矿 广告刷流量 针对web服务 劫持后台常见 篡改页面 传播蠕虫 内网扫描常见4XSS类型反射型:反射型也称为非持久型这种类型的脚本是最常见的也是使用最为广泛的一种主要用于将恶意的脚本附加到URL地址的参数中。存储型攻击者将已经构造完成的恶意页面发送给用户用户访问看似正常的页面后收到攻击这类XSS通常无法直接在URL中看到恶意代码具有较强的持久性和隐蔽性。DOMDOM型XSS无需和后端交互而是基于JavaScript上JS解析URL中恶意参数导致执行JS代码2.XSS分类详解1存储型XSS存储型XSS持久性代码是存储在web服务器中的比如在个人信息或发表文章等地方插入代码如果没有过滤或者过滤不严那么这些代码将存储在服务器中用户访问该页面的时候触发代码执行。这种XSS比较危险容易造成蠕虫、盗窃cookie。每一个访问特定页面的用户都会受到攻击。特点XSS攻击代码存储于web server上攻击者一般是通过网站的留言、评论、博客、日志等功能所有能够向web server输入内容的地方将攻击代码存储到web server上的 存储型XSS攻击流程2反射型XSS反射型跨站脚本也称作非持久型、参数型跨站脚本、这类型的脚本是最常见的 也是使用最为广泛的一种主要用于将恶意的脚本附加到URL地址的参数中。http://www.test.com/search.php?keyscriptalert(xss)/script 一般使用的将构造好的URL发给受害者是受害者点击触发而且只执行一次非持久化。反射型XSS攻击流程反射型XSS-DVWAPayloadLow:scriptalert(1)/script Mid:SCRIPTalert(1)/SCRIPT High:img src1 οnerrοralert(1) 3JS简介JavaScript一种直译式脚本语言是一种动态类型、弱类型、基于原型的语言内置支持类型。它的解释器被称为JavaScript引擎为浏览器的一部分广泛用于客户端的脚本语言最早是在HTML标准通用标记语言下的一个应用网页上使用用来给HTML网页增加动态功能。在1995年时由Netscape公司的Brendan Eich在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作Netscape管理层希望它外观看起来像Java因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。为了取得技术优势微软推出了JScriptCEnvi推出ScriptEase与JavaScript同样可在浏览器上运行。为了统一规格因为JavaScript兼容于ECMA标准因此也称为ECMAScript。3.XSS发现与防护1XSS的五种防御方式HTML节点内容的XSS防御转义掉和即转义掉即可转义的时候有两种一种是写入数据库的时候进行转义另一种是在解析的时候转义 这里是在显示的时候转义var escapeHtml function(str){ str str.replace(//g,lt;) str str.replace(//g,gt;)return str}escapeHtml(content)HTML属性的XSS防御 转义 quto;即转义掉双引号转义掉单引号另一个要注意的是实际上html的属性可以不包括引号因此严格的说我们还需要对空格进行转义但是这样会导致渲染的时候空格数不对因此我们不转义空格然后再写html属性的时候全部带上引号这样属性就不会被提前关闭了var escapeHtmlProperty function(str){ str str.replace(//g,quto;); str str.replace(//g,#39;); str str.replace(/ /g,#32;);return str;} escapeHtmlProperty(content);其实以上两个函数可以合并成一个函数这样不管是内容还是属性都可以使用一个函数来过滤了。 HTML转义函数var escapeHtmlProperty function(str){if(!str) return ; str str.replace(//g,amp;); str str.replace(//g,lt;); str str.replace(//g,gt;); str str.replace(//g,quto;); str str.replace(//g,#39;);return str;}escapeHtml(content);js转义 转义掉或者替换成jsonvar escapeForJs function(str){if(!str) return ; str str.replace(/\\/g,\\\\); str str.replace(//g,\\);} 富文本由于需要完整的HTML因此不太容易过滤一般是按照白名单进行保留部分标签和属性来进行过滤除了允许的标签和属性其他的全部不允许也有黑名单的方式但是由于html复杂效果比较差原理就是之前的正则替换 其实可以用别人写好的XSS组件就叫做xss直接npm install xss 白名单-使用第三方库XSS支持指定白名单var xssFilter function(html){if(!html) return ;var xss require(xss);var ret xss(html,{whileList:{img:[src],a:[href],font:[size,color] },onIgnoreTag: function(){return ; } }); console.log(html,ret); return ret;} **2XSS蠕虫攻击** XSS蠕虫的破坏力和影响力都是巨大的。XSS蠕虫主要发生在用户之间存在交互行为的页面中当Web应用程序对用户输入的数据信息没有做严格的过滤时通过结合Ajax的异步提交就可以实现在植入恶意代码的同时将恶意代码进行对外发送即实现了代码的感染和传播也就形成了XSS蠕虫。3挖掘XSS漏洞扫描工具自动化检测 AWVS AppScan JSKy 手工测试 源码分析4XSS漏洞的防范XSS跨站脚本攻击漏洞防范客户端用户IE8及高级版本开启XSS筛选器功能 Firefox使用CSP、Noscript等扩展功能 瑞星个人防火墙2012版本开启XSS拦截功能Web应用程序员使用HttpOnly 完善的输入、输出检查HttpOnlyHttpOnly最初是由微软提出的,目前已经被多款流行浏览器厂商所采用。HttpOnly的作用不是过滤XSS跨站脚本攻击而是浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie解决XSS跨站脚本攻击后的Cookie会话劫持行为。输入、输出检查由于三种XSS跨站脚本攻击类型的漏洞成因可不相同针对输入输出的检查一部分适用于反射型XSS与存储型XSS而另外一些检查适用于基于DOM的XSS 在大多数的时候都是对可信字符的检查或输入数据格式的检查如用户输入的注册账号信息中只允许包括字母、数字、下划线和汉字等对于输入的一切非白名单内的字符均认为是非法输入。数据格式如IP地址、电话号码、邮件地址、日期等数据都具有一定的格式规范只有符合数据规范的输入信息才允许通过检查。输出检查主要是针对数据展示过程应该对数据的信息进行HTML编码处理将可能存在导致XSS跨站脚本攻击的恶意字符进行编码在不影响正常数据显示的前提条件下过滤恶意字符。常见的可能造成的XSS跨站脚本攻击的字符及其HTML编码如 --- quot --- apos --- amp --- It --- gt除了常用的编码外任何字符都可以使用其ASCII码进行HTML编码如% --- * --- DOM Based XSS输入、输出检查 - 特殊性 - 基于DOM的XSS跨站脚本攻击发生时恶意数据的格式与传统的XSS跨站脚本攻击数据格式有一定的差异甚至可以在不经过服务器端的处理和响应的情况下直接对客户端实施攻击行为。- 输入检查 - 在客户端部署相应的安全检测代码的过滤效果要比在服务器端检测的效果更加明显。 - 客户端检测代码来保证用户输入的数据只包含字母、数字和空格。 - 服务端实现上述数据检查的功能 - URL参数名称、个数检测 - 参数值类型及内容检测- 输出检查 - 在将用户可控的DOM数据内容插入到文档之前Web应用程序应对提交的数据中可能存在的各种危险字符和表达式进行过滤以安全的方式插入到文档中进行展现。像目前比较火热的开发岗位实属网络安全毕竟国家网络安全法也出台了网络安全等级保护2.0等合规要求也出来了。网络安全对于大部分政企单位来说已经从[可选项]变成了[必选项]。在以前很多政企单位在进行 IT 部门及岗位划分时只有研发和运维部门安全人员直接归属到基础运维部而现在越来越多单位为了满足国家安全法律法规的要求必须成立独立的网络安全部门拉拢各方安全人才、组建 SRC安全响应中心为自己的产品、应用、数据保卫护航。根据国家发布的《网络安全人才实战能力白皮书》数据显示目前中国网络安全人才供应严重匮乏每年高校安全专业培养人才仅有3万余人而网络安全岗位缺口在2027年将达327万缺口高达95%。了解网络安全首先要搞清楚下面这些前提网络安全到底包含哪些技术是否需要会编程网络安全行业有哪些职业方向“我”该如何选择网络安全的职业发展和成长路线是什么如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】