xss小总结
xss漏洞#
反射型:url被插入恶意代码,服务端将url中的代码输出到页面。攻击者可以将带有恶意代码的url发送给用户,用户打开后受到攻击。最后代码插入在html中。
存储型:恶意代码被存储到数据库,文件等中,当数据被访问时触发。最后代码插入在html中。
dom型:url被插入xss代码,前端页面直接从url中获取代码并输出到页面。攻击者将含有xss代码的url发送给用户,用户打开后受到攻击。最后代码插入到前端js代码中。
xss基本过程#
根据所在位置构造相应的代码,一般为闭合相应标签,也可以用一些事件来进行触发闭合,如onmouseover=alert() onclick
等
- 一些表单可能通过bp截断
- 一些表单输入可能有限制,可以修改源码设置的长度大小
- 利用javascript伪协议,如
javascript:alert()
- 如果一些有过滤机制,可以采用双写绕过,编码绕过(转换成16进制绕过,一些编码绕过如unicode),空格绕过,大小写绕过,用%0a,%0d代替空格等
- 在ie浏览器中``可以闭合双引号
- 利用css触发,
background:url("javascript:alert(document.domain);");
只在部分ie中有效 - 在css中可以利用注释符绕过对一些字符的过滤
xss:expres/**/sion(if(!window.x){alert(document.domain);window.x=1;})css中的expression
叫做动态属性,后来被取消,一些悬浮的模块可能仍采用此
较全的绕过总结https://blog.csdn.net/keepxp/article/details/52054388
源#
- 源:包括协议,主机名,端口号
- 同源策略:阻止页面的恶意代码去访问非同源的页面
- domain属性解决因同源策略带来的不同文档的属性共享问题
防御xss的几个函数#
- setcookie,通过将参数设置为true可以使cookie不能被js获取
- htmlspecialchars()将html标签以实体输出
- htmlentities()与上相同
- escapeHTML()
- strip_tags将标签去除
- 对json内容的转义escapeEmbedJSON()
- 可以自定义xss过滤器
- 应该关注新出现的html标签,可能这些标签还没有被过滤,可能触发xss
xss位置#
- get型url中的xss:如果get提交的参数显示到页面中,可能就有xss漏洞
- post型表单中的xss:表单提交的数据显示在表单中
- json中的xss:json是一种轻量级的数据交换格式,易于人阅读和编写,易于网络传输,最常用的格式为键值对
- 自定义的http头的参数显示在页面中
常用xss注入标签#
<script>,定义客户端脚本
<img src=>,规定显示图像的 URL
<body background=>,规定文档背景图像URL
<body onload=>,body标签的事件属性
<input onfocus= autofocus>,form表单的事件属性
<button onclick=>,击键的事件属性
<link href=>,定义外部资源链接
<object data=>,定义引用对象数据的 URL
<svg onload=>,定义SVG资源引用
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性