Java教程

web安全 - XSS类型

本文主要是介绍web安全 - XSS类型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1. 传统分类

  • 反射型XSS (Reflected XSS)
    当web应用在搜索结果,错误消息或其他响应返回用户输入时,就会发生反射型XSS。最常见的做法
    是攻击者利用web应用的xss漏洞,构造一个url,通过邮件短信等方式诱导用户点击,当请求发出后,
    web应用返回url中隐藏的恶意代码,并在用户浏览器中执行,从而发生发射型XSS。

  • 存储型XSS (Stored XSS)
    当web应用未对用户输入进行安全校验时,恶意代码可能会被输入并存储到服务器的数据库,当其他用户
    浏览相关页面时,恶意代码就会从数据库中取出,并发送到用户浏览器中进行执行,从而形成多用户,
    持久性的攻击,从而形成存储型xss。

  • 基于Dom的XSS (Dom Based XSS)
    数据源在Dom中,接收器也在Dom中,数据流不会离开浏览器。数据源可能是页面的URL,也可能是HTML
    的一个元素,最常见的是来自ajax请求返回响应数据。 而接收器则是一个敏感的方法调用, 比如
    Element.innerHTML, document.write, eval等它会导致 执行恶意的数据。

2. 新分类

  • 服务端XSS (Server XSS)
    当恶意代码包含在服务器生成的HTTP响应中时,就会发生服务端XSS。此恶意代码数据可能来自请求,
    也可能来自数据库存储,因此服务端XSS,即可能包含反射型XSS,也可能包含存储型XSS。
    这种情况,整个漏洞都在服务端代码中,浏览器只是响应并执行嵌入其中的任何有效脚本。

  • 客户端XSS (Client XSS)
    当使用不受信任的用户提供的数据通过不安全的javascript调用更新Dom时,就会发生客户端XSS。
    此数据的来源可能来自Dom,也可能是服务器发送的。数据的最终来源可能来自请求,或者来自客户端
    或服务器上的存储位置。因此客户端XSS可能具有反射型XSS,也可能包含存储型XSS。基于Dom的XSS只是
    客户端XSS的一个子集,其数据源来自于Dom中的某个位置而不是服务器。

  • XSS 分类矩阵
    | XSS | 服务端 | 客户端 |
    |-----|-----|-----|
    | 存储型 | 服务端存储型XSS | 客户端存储型XSS |
    | 反射型 | 服务端反射型XSS | 客户端反射型XSS |

  • 服务端XSS防御
    服务端XSS是由在HTML响应中包含不受信任的数据引起的,因此在大多数情况下,针对服务端XSS
    最简单和最强的防御是:上下文相关的服务器端输出编码。(HTML实体编码,javascript编码,url编码)

  • 客户端XSS防御
    当使用不受信任的数据通过不安全的javascript调用更新Dom时,会导致客户端XSS。针对客户端XSS最
    简单和最强的防御是:使用安全的javascript API。

    如果某个javascrpt API 是不安全的(eval ), 则建议找到替代的安全方法来使用(JSON.parse).
    如果由于某种原因无法使用安全的替代方法,则可以在浏览器中完成上下文相关的输出编码,然后将
    该数据传递给不安全的javascript 方法。

这篇关于web安全 - XSS类型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!