json - 解析器如何处理 json 数据
问题描述
我正在阅读Cross_Site_Scripting_Prevention_Cheat_Sheet,它在规则 3.1 上说
确保返回的 Content-Type 标头是 application/json 而不是 text/html。这将指示浏览器不要误解上下文并执行注入的脚本
这是否意味着如果我想在 html 页面中嵌入 json 数据并且该数据包含标签,例如 < script >alert(/XSS/)</script > (没有空格),这应该不起作用,因为解析器不会读取标签,所以在这种情况下我们不需要编码,对吗?!,因为 owasp 说在那之后,我们也应该进行HTML ENTITY ENCODING,所以我想知道我们为什么要这样做?
我开始学习解析器所以忘记我缺乏知识
解决方案
根据我对 xss 站点攻击的理解,不是解析器会导致问题。让我们举一个例子,你收到了来自受感染浏览器的请求。下面的示例
{ "Name": "<script>alert('test');</script>" }
以及您在响应客户端时使用的来自浏览器的相同输入请求参数,无需任何编码或检查。
当客户端浏览器尝试使用此字段来显示浏览器的名称时,例如 hello 、Name。用户将收到警报。这是不可取的。我们总是必须限制和拒绝接受任何标签的请求,这样才能消除任何脚本问题。
我不是安全问题专家。但在 json 中拒绝带有标签的请求总是更好。
推荐阅读
- python - 通过 M2O 关系与模型链接的模型通过 M2O 关系与模型进一步链接会引发错误
- c# - 如何通过单击特定单元格来切换 Excel 工作表?VSTO C#
- ios - Firebase Firestore iOS 多种型号
- javascript - 正则表达式捕获内联数学公式,例如:python 或 javascript 中的 $ inline $
- rule-engine - CodeEffects 规则编辑器在保存规则时抛出异常“没有找到“token”属性的“[NULL]”值的方法”
- javascript - 使用 HTML 和 JS 将 HTML 从一个文件导入到另一个文件?
- .net - 如何更新另一个线程上的控件?
- angular - 为什么我在使用 Postman 和 Angular HttpClient 时得到不同数量的响应标头?
- python - 如何在普通控制台模式下使用 structlog 对键:值对进行排序?
- php - 从 foreach 循环中断行