XSS脚本详情

XSS脚本攻击

定义:

XSS全称(Cross Site Scripting)跨站脚本攻击,XSS属于客户端攻击,受害者最终是用户(网站管理员也属于用户),常用语言为JavaScript(也有其他语言)

原理:

程序对输入输出控制不够严格,进而脚本输入后,在输出到前端被浏览器当作正常代码解析从而产生危害,输入输出条件必须同时满足

万能代码框架

 '"><script>alert(1)</script>

XSS分类:

反射型XSS

  • 交互的数据一般不会被存在在数据库里面,只是简单的把用户输入的数据反射给浏览器,一次性,所见即所得。(中危)

储存型XSS

  • 交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性 (高危)

DOM XSS

  • 不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞 (低危)

XSS可能存在的地方

 ·HTML Context

 ·Attribute Context

 ·URL Context

 ·style Context

 ·Script Context

XSS的危害

·劫持用户cookie

·框架钓鱼

·挂马

·键盘记录

测试XSS的方法

工具

  • APPscan、AWVS、Burpsuite 等

  • 半自动化工具

  • Burpsuite、firefox(hackbar)、XSSER XSSF等

手工

  • 最重要的是考虑那里有输入,输入的数据在什么地方输出

防范方法

·输入过滤,输出编码,具体见https://www.cnblogs.com/cute-puli/p/11099543.html

同源策略

什么是跨域

  • 当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。

同源策略

  • 为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象
    那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。

不受同源策略限止

- <script src="...">  //加载本地js执行
- <img src="...">     //图片
- <link href="...">   //css
- <iframe src="...">  //任意资源

同源策略修改

  • 后台设置好Access-Control-Allow-Origin,设置为*,既允许所有人访问

XSS绕过

·前端限制绕过

·大小写混合

·拼凑绕过

·编码

·注释干扰后台绕过

htmlspecialchars()函数

  • htmlspecialchars()函数的作用

  • & (和号)成为 &amp

  • " (双引号)成为 &quot

  • ’ (单引号)成为&#039

  • < (小于)成为 &lt

  • ->(大于)成为 &gt

  • htmlspecialchars()函数配置参数

  • 可用的quotestyle类型:
    ENT_COMPAT - 默认。仅编码双引号 (可绕过)
    ENT_QUOTES - 编码双引号和单引号(a标签可绕过)
    ENT_NOQUOTES - 不编码任何引号

Vue 框架本身并不能直接解决 XSS(跨站脚本攻击)问题,但可以采取一些措施来减轻和防止这类攻击的发生。下面是一些常见的方法: 1. 使用模板语法:Vue 的模板语法会自动对插值进行 HTML 转义,这可以防止恶意脚本的执行。确保在插值表达式中使用双花括号 `{{ }}` 或 `v-text` 指令,而不是 `v-html` 指令。 2. 使用过滤器:Vue 的过滤器可以对数据进行处理和转义,例如使用内置的 `{{ text | filter }}` 语法或者通过全局过滤器。在过滤器中使用可信的 HTML 清理库,如 DOMPurify,对数据进行 XSS 过滤。 3. 使用第三方库:可以使用一些专门用于防止 XSS 攻击的第三方库,例如 vue-xss 或 DOMPurify。这些库提供了更强大的 XSS 过滤和安全性功能,可以在渲染数据之前进行过滤和清理。 4. 输入验证和过滤:在接收用户输入时,进行严格的输入验证和过滤。确保仅接受预期的数据类型和格式,并对用户输入进行适当的转义或过滤。 5. 安全 HTTP 头设置:在服务器端设置适当的 HTTP 头,如 Content-Security-Policy(CSP)和X-XSS-Protection,以帮助防止 XSS 攻击。 6. 定期更新依赖库:保持 Vue 及其相关依赖库的最新版本,以获取最新的安全修复和功能更新。 需要注意的是,以上方法只是减轻和防止 XSS 攻击的一些基本措施,不能保证100%的安全。在开发过程中,还应该密切关注安全性问题,并遵循最佳实践来保护应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值