【问题标题】:How json data is handled by the parser解析器如何处理 json 数据
【发布时间】:2021-05-12 03:17:48
【问题描述】:

我正在阅读Cross_Site_Scripting_Prevention_Cheat_Sheet,它在规则 3.1 中有所说明

确保返回的 Content-Type 标头是 application/json 而不是 文本/html。这将指示浏览器不要误解 上下文并执行注入脚本

这是否意味着如果我想在 html 页面中嵌入 json 数据并且该数据包含标签,例如 alert(/XSS/)(没有空格),这应该不起作用,因为解析器赢了'不读取标签,所以在这种情况下,我们不需要编码,对吗?!,因为 owasp 说在那之后,我们也应该做 HTML ENTITY ENCODING,所以我想知道我们为什么要这样做?

我开始学习解析器,所以忘记我缺乏知识

【问题讨论】:

  • 这些是替代品。一种替代方法是将数据作为 application/json 发送。我不知道为什么他们认为这并不总是实用(或“高性能”),但我想这取决于您的服务器的体系结构。因此,如果您选择发送嵌入在 HTML 中的数据,那么您应该确保对特殊字符进行实体编码。 (application/json 文档中的实体编码字符将不起作用。)

标签: json parsing security html-parsing


【解决方案1】:

根据我对 xss 站点攻击的理解,不是解析器会导致问题。让我们举一个例子,你收到了来自受感染浏览器的请求。下面的示例

{ "Name": "<script>alert('test');</script>" }

您在响应客户端时使用的来自浏览器的相同输入请求参数,无需任何编码或检查。

当客户端浏览器尝试使用此字段来显示浏览器的名称时,例如 hello 、Name。用户将收到警报。这是不可取的。我们总是必须限制和拒绝接受任何标签的请求,这样才能消除任何脚本问题。

我不是安全问题专家。但是最好拒绝带有 json 中标签的请求。

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2015-03-12
    • 2017-04-11
    • 2018-07-07
    • 2018-12-13
    相关资源
    最近更新 更多