zoukankan      html  css  js  c++  java
  • XSS跨站网络攻击

    1. 什么是跨站网络攻击

    跨站脚本攻击(简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。

    XSS漏洞通常是通过输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。


    XSS跨站脚本,是一种Web安全漏洞,他并不像SQL注入等攻击手段攻击服务端,本身对Web服务器没有危害,攻击的对象是客户端,使用浏览器访问这些恶意地址的网民。



    2. XSS 危害

    1. 网络钓鱼,包括盗取各类用户账号
    2. 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
    3. 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等
    4. 强制弹出广告页面、刷流量等
    5. 网页挂马



    3. XSS 原理

    HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,之间的字符是页面的标题等等。

    当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。

    所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

    XSS 攻击有两大要素:

    1. 攻击者提交恶意代码。
    • 后台处理,转义可能存在的掉html标签。但是在转义的时候可能出现 将 大于> 、小于 < 转义,可能出现错误的转义。
      要根据实际的业务做相应的调整。如需要保存:2>7 ,则会转义为:2>7
    1. 浏览器执行恶意代码。
    • 前端处理,有一些前端框架已经默认做xss相应的处理。

    后端和前端一起协作,终可防御xss攻击。



    4. XSS 分类

    根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种。

    4.1 存储型XSS攻击

    存储型XSS:持久化,代码是存储在服务器中的。

    如:在个人信息发表文章或留言,评论等地方,加入代码,如果没有经过编码转换或过滤,那么这些代码将储存到服务器中,由于恶意代码存到了数据库,以后所有用户访问该页面的时候都会触发代码执行。

    案例:https://blog.csdn.net/weixin_45694388/article/details/108027522

    4.2 反射性XSS攻击

    反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容)。大多数是用来盗取用户的Cookie信息。

    如:把恶意代码注入到正常的URL之中,然后把带有恶意脚本的URL通过邮件,朋友圈,或发送到群,诱导用户点击。当用户被诱骗点击恶意链接,注入的代码会传到易受攻击的网站服务器。服务器端接收数据处理后,再把带有恶意代码的数据返回用户的浏览器。

    一般是使用alert来探测站点是否防御,直接攻击的使用src来引入自己的脚本

      http://localhost:1521/?from=<script>alert(1)</script>bing
    

    如:我们在访问一个链接的时候(http://102.3.203.111/Web/reflectedXSS.jsp?param=value...),这个URL中就带了参数(param=value...),如果服务端没有对参数进行必要的校验,直接根据这个请求的参数值构造不同的HTML返回,让value出现在返回的html中(JS,HTML某元素的内容或者属性)并被浏览器解释执行,就可能存在反射型XSS漏洞。

    4.3 DOM型XSS攻击

    什么是dom:
    dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。


    DOM型XSS:不依赖于服务器端的数据,完全由客户端浏览器执行。通过恶意脚本,可以动态地检查和修改页面的dom结构与内容,而不依赖于服务器端的数据,属于前端JavaScript自身的安全漏洞。

    参考:https://www.cnblogs.com/fairyting/p/12630548.html

    4.5 三者区别

    反射型、存储型、两种恶意脚本都会经过服务器端然后返回给客户端,相对DOM型来说比较好检测与防御。

    而DOM型不用将恶意脚本传输到服务器在返回客户端,这就是DOM型和反射、存储型的区别。



    5. 防御 XSS 攻击

    XSS 存在的根本原因是,对URL中的参数,对用户输入提交给web server的内容,没有进行充分的过滤。

    如果我们能够在web程序中,对用户提交的URL中的参数,和提交的所有内容,进行充分的过滤,将所有的不合法的参数和输入内容过滤掉,那么就不会导致“在用户的浏览器中执行攻击者自己定制的脚本”。

    XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。

    也就是:
    对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;
    然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。

    https://blog.csdn.net/woniumenga/article/details/47323829#

    https://www.cnblogs.com/dslx/p/11551542.html

    https://juejin.cn/post/6844903869965680654

    https://juejin.cn/post/6844903869965680654

    https://www.cnblogs.com/duyingxuan/p/6418521.html

    https://zhuanlan.zhihu.com/p/101300360

    https://www.cnblogs.com/digdeep/p/4695348.html

  • 相关阅读:
    codeforces 1060 B
    codeforces 1060 A
    牛客 国庆七天乐 day1 L
    BZOJ 1087: [SCOI2005]互不侵犯King
    codeforces 792CDivide by Three(两种方法:模拟、动态规划
    codeforces 797C Minimal string
    codeforces 110E Lucky Tree
    codeforces 798D
    2017福建省赛 FZU2272~2283
    Android -- Looper、Handler、MessageQueue等类之间关系的序列图
  • 原文地址:https://www.cnblogs.com/itlihao/p/15587270.html
Copyright © 2011-2022 走看看