zoukankan      html  css  js  c++  java
  • xss漏洞

    在学习xss漏洞之前我们先学习一下,什么叫做同源策略。

    所谓同源策略指的是,浏览器对不同源的脚本或文本的访问方式进行限制。

    所谓同源指的是,域名,协议,端口相同。

    在HTML语言中,有部分标签在引用第三方资源时,不受同源策略的限制:

    <script>

    <img>

    <iframe>

    <link>

    下面我们来说xss漏洞的原理:

    跨站脚本攻击(cross site scripting)的缩写,恶意攻击者往web页面里插入恶意script代码,当用户浏览该页之时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的。

    xss漏洞发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中,出现了不被预期的脚本指令并执行时,xss就会发生。

    ps:xss漏洞通常指黑客通过“HTML注入”纂改了页面,插入了恶意的脚本,从而在用户浏览页面时,控制用户浏览器的一种攻击。

    xss漏洞分为三种DOM型,存储型,反射型  

    DOM型:攻击代码在URL中,输出在DOM节点中

    存储型:攻击代码在数据库中,输出在http响应中

    反射型:攻击代码在URL中,输出在http响应中

    xss漏洞产生的原因:web应用程序对用户的输入过滤不足造成的。攻击者利用网站漏洞把恶意代码插入到页面中,其他用户浏览该页面时,恶意代码被执行。对受害用户可采取cookie资料获取,钓鱼网站,会话劫持等攻击

    如何预防xss漏洞

    一,给cookie的属性设置为httponly

    这样能够避免js读取Cookie信息(设置后有助于缓解XSS,但是XSS除了劫持Cookie之外,还可以模拟用户的身份进行操作)

    二,进行输入检查

    如果仅仅在客户端通过JS来做输入校验,有可能会被攻击者绕过,WEB开发中的普遍做法是同时在客户端和服务端做校验。这种输入检查的方式也称之为XSS Filter。

    三,输出检查

    一般说来,除了富文本输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。

    四,防御DOM BasedXSS

    前面提到的集中方法,对于这种类型不太适用,需要特别对待,那如何才能防御呢?

    首先是$var输出到<script>是,应该执行一次javasriptEncode,其次在doument.write输出到HTML页面时,如果是输出到事件或者脚本,可以再做一次javaScriptEncode,如果是输出到HTML内容或者属性,则可以做一次HtmlEncode。

    上面提到的这些防御方法都属于安全生产的环节,也就是说实在开发同学写代码的时候要特别注意,这种是否做的规范,可以通过工具扫描代码的方式来实现,也就是白盒测试,如果代码没有做输入或者输出检查,则发报告提示开发来进行修改。但是有些场景白盒没法覆盖到,例如输出jsonp类型的接口,对于callback参数的原味输出,白盒有时候就扫不出来,这时候,可以通过黑盒测试工具,模拟入参的各种情况,也就是穷举,来构造,如果发生了XSS请求,则发出报告即可。

    摘抄:

    XSS跨站漏洞分为大致三种:储存型XSS,反射型XSS,和DOM型XSS,一般都是由于网站对用户输入的参数过滤不严格而调用浏览器的JS而产生的。

    1. 储存型XSS:

      一般是构造一个比如说"<script>alert("XSS")</script>"的JS的弹窗代码进行测试,看是否提交后在页面弹窗,这种储存型XSS是被写入到页面当中的,如果管理员不处理,那么将永久存在,这种XSS攻击者可以通过留言等提交方式,把恶意代码植入到服务器网站上, 一般用于盗取COOKIE获取管理员的信息和权限。

    2. 反射型XSS:

      一般是在浏览器的输入栏也就是urlget请求那里输入XSS代码,例如:127.0.0.1/admin.php?key="><script>alert("xss")</script>,也是弹窗JS代码。当攻击者发送一个带有XSS代码的url参数给受害者,那么受害者可能会使自己的cookie被盗取或者“弹框“,这种XSS一次性使用,危害比储存型要小很多。

    3. dom型:

      常用于挖掘,是因为api代码审计不严所产生的,这种dom的XSS弹窗可利用和危害性并不是很大,大多用于钓鱼。比起存储型和反射型,DOM型并不常用。

    跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

    XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。

  • 相关阅读:
    堆得简单介绍以及堆排序
    从交换两个变量的值来看程序员的“奇技淫巧”
    两道有意思的题目
    mac上使用brew
    安全考虑,binlog_row_image建议尽量使用FULL
    Python3.6新特性
    自动化测试基础篇--Selenium浏览器操作
    自动化测试基础篇--Selenium Xpath定位
    自动化测试基础篇--Selenium元素定位
    自动化测试基础篇--Selenium Python环境搭建
  • 原文地址:https://www.cnblogs.com/wang1212-/p/8797315.html
Copyright © 2011-2022 走看看