Xss(跨站脚本攻击)漏洞解析

xss跨站脚本攻击

什么是XSS

跨站脚本攻击 (Cross Site Script),缩写CSS,为了和层叠样式表(Cascading Style Sheet,CSS)区别,在安全领域叫做“XSS”,是一种Web应用程序的漏洞。

原理:

攻击者向有XSS 漏洞的网站中(web页面)插入恶意的JavaScript代码,当用户浏览该网站页面时,嵌入其中的代码就会自动执行,从而达到恶意攻击的用户目的。

XSS漏洞的危害

  • 盗取用户Cookie
  • 破坏页面结构
  • 重定向到其它网站
  • 传播蠕虫病毒。

XSS漏洞的分类

反射型 XSS (非持久型)

​ 黑客**诱使用户“点击”**带有XSS代码的恶意链接,用户点击该恶意链接后向服务器发送请求,服务器处理后把带有 XSS 代码的数据返回到用户浏览器,浏览器解析这段带有 XSS 代码的数据后,最终造成 XSS 漏洞。这个过程就像一次反射,故称为反射型 XSS 漏洞。

在这里插入图片描述

存储型 XSS (持久型 XSS)

​ 存储型XSS漏洞是因为服务器端将用户输入的恶意脚本没有通过任何验证就直接“存储”在数据库,并且每次通过调用数据库的方式,将该恶意脚本在没有被编码或转义的情况下将数据呈现在浏览器上

在这里插入图片描述

基于 DOM 的 XSS

​ 此分类并非按照“数据是否保存在服务器端”来划分,从效果来看,DOM 式XSS 其实是一种特殊类型的反射型 XSS。通过修改页面的DOM节点形成的XSS(网页本身的 JavaScript也是可以改变 HTML)。相比前两种XSS漏洞,这里不需要使用服务器进行解析。

在这里插入图片描述

XSS Payload

  • 传统测试方式

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

    任意有输入功能的地方,使用上面代码尝试是否可以有如下的弹窗:

    在这里插入图片描述

    alert()(警告消息框)可替换为如下:

    confirm()(确认消息框)

    <script>confirm("单机“确认”继续,单击“取消”停止")</script>

在这里插入图片描述

prompt()(提示消息框)

<script>prompt("您的名字?")</script>

在这里插入图片描述

  • JavaScript事件:

    onload、onerror、onclick、onmouseover

    <body onload=alert(‘xss’)> 					//页面加载完毕后立即发生
    <div onclick ="alert('xss’)”>				//元素被点击时发生
    <img src=# onerror=alert(‘xss’)> 			//数据加载期间发生错误时执行
    <div onmouseenter="alert('xss')"> 			//事件在鼠标指针移动到元素上时触发
    
    
  • Javascript URL

    <a href="javascript:alert(‘test’)">登录</a>

  • 获取cookie:

    只需将弹窗内容改为document.cookie即可。

    例:<script>alert(document.cookie)</script>

Xss漏洞绕过姿势

  • 大小写转换

  • 双写绕过

  • 利用JavaScript事件弹窗

  • 1、使用事件

    2、结合程序执行顺序即危险字符删除顺序,进行双写

  • 转义字符

    把Xss语句转换成16进制

  • 闭合标签

Xss漏洞防御

  • 1、HTML实体。

    对用户输入的参数进行html编码。

    如php中的htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

    &   ->   &amp;	
    <   ->   &lt;	
    >	->   &gt;	
    "	->   &quot;	
    
  • 2、使用XSS Filter。

  • 3、白名单和黑名单结合过滤。

  • 4、设置会话Cookie的HTTP Only属性,客户端的JS脚本便不能获取Cookie信息了。

  • 5、输入内容长度控制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值