XSS攻击(全站跨站脚本攻击)

XSS介绍
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。对于跨站脚本攻击,骇客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”.
XSS成因:
对于用户输入没有严格控制而直接输出到页面
对非预期输入的信任
XSS的危害
盗取各类用户账号
窃取数据
非法转账
挂马

Exp是有害的,Poc是无害的,payload是有效负载

XSS分类
存储型(持久型):数据从数据库中获得
反射型(非持久型):数据从输入中获得、DOM型
为了防止出现非持久型 XSS 漏洞,需要确保这么几件事情 :
1 . Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。
2 . 尽量不要从 URL,document.referrer,document.forms 等这种 DOM API 中获取数据直接渲染。
3 . 尽量不要使用 eval, new Function(),document.write(),document.writeln(),window.setInterval(),window.setTimeout(),
innerHTML,document.creteElement() 等可执行字符串的方法。
4 . 如果做不到以上几点,也必须对涉及 DOM 渲染的方法传入的字符串参数做 escape 转义。
5 . 前端渲染的时候对任何的字段都需要做 escape 转义编码。

escape 转义的目的是将一些构成 HTML 标签的元素转义,比如 <,>,空格 等,转义成 <,>, 等显示转义字符。有很多开源的工具可以协助我们做 escape 转义。
为了防止持久型 XSS 漏洞,需要前后端共同努力 :
1 . 后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理。
2 . 后端在输出给前端数据统一进行转义处理。
3 . 前端在渲染页面 DOM 的时候应该选择不相信任何后端数据,任何字段都需要做转义处理

XSS盲打平台与蠕虫
XSS盲打是指攻击者对数据提交后展现的后台未知情况下的一种XSS攻击方式

XSS蠕虫的原理
利用XSS实现某种操作,比如微博关注用户
实现某些操作的同时,触发蠕虫代码复制和传播
《XSS蠕虫&病毒–即将发生的威胁与最好的防御》

cookie 是有周期时间的
XSS漏洞:获取用户cookie、改变网页内容、URL调转

web前端应对XSS攻击的策略:
1.页面指定编码
2.Web 页面渲染的所有内容或者渲染的数据都必须来自于服务端。
3.页面不允许用iframe访问
4. 输入检查 XSS Filter对输入内容做格式检查,类似“白名单”,可以让一些基于特殊字符的攻击失效。在客户端JS和服务器端代码中实现相同的输入检查(服务器端必须有)
5.除了富文本的输出外,在变量输出到 HTML 页面时,可以使用编码或转义的 方式来防御 ⅩSS 攻击(过滤用户输入,过滤页面输出)
6.代码混淆,参数加密

服务器应对XSS攻击的策略:
1.XML 中不仅要指定字符集为 utf-8,而且标签要闭合
2.给cookie设置HttpOnly属性,可以防止cookie被劫持
3.服务器返回HTTP头,并在其中描述页面应该遵守的安全策略。
如:X-Content-Security-Policy: allow ˈselfˈ; img-src *; media-src media1.com; script-src userscripts.example.com
浏览器除了信任自身的来源外,还可以加载任意域的图片、来自 media1.com 的媒体文件, 以及 userscripts.example.com 的脚本,其他的则一律拒绝。
4.服务器与客户端约定请求数据的加密方式。
5.建议数据请求依照:
渲染表单的时候,为每一个表单包含一个 csrfToken,提交表单的时候,带上 csrfToken,然后在后端做 csrfToken 验证。

SQL防御:
不信任一切用户输入和前端传参

Shell 注入(Linux):
参数过滤
禁用执行Shell命令的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值