在反射型 XSS 中,为什么我们需要清理单引号、双引号、与号和反斜杠

In Reflected XSS, why do we need to sanitize single quote, double quote, ampersand, and backslash

提问人:g_b 提问时间:1/13/2022 更新时间:1/13/2022 访问量:205

问:

基于本文

https://resources.infosecinstitute.com/topic/how-to-prevent-cross-site-scripting-attacks/

当注入的数据反映在响应中时,就会发生反射 XXS。我的想法是,例如,如果我的页面中有一个搜索框,并且用户输入的搜索词显示在页面中,那么有人可以写成搜索词:

<script>alert('x');</script>

这将在显示响应的页面中被读取为常规 HTML 元素。

但是,假设大于和小于已经在输入中被阻止(这意味着它们将无法放入脚本标记或任何标记),如果我允许在响应中反映单引号、双引号、与号和反斜杠,有什么问题。我试图理解它,但我不确定我是否理解正确。

ASP.NET-MVC 安全性 XSS

评论


答:

1赞 Tore Nestenius 1/13/2022 #1

如今,Web 堆栈庞大而复杂,具有多种语言。我们有 HTML、CSS、JavaScript、VB-Script、SVG、URL......

每个都有自己的规则:

  • 编码
  • 引用
  • 评论
  • 逃避

此外,每个都可以相互嵌套:

enter image description here

仅仅替换<>就可以解决一些问题,但不是所有问题,因为您不知道数据最终会在哪里,它是在 HTML 中吗?作为 HTML 属性?在 JavaScript 字符串中?每个人都需要不同的编码才能变得安全。

所以,世界有点复杂......