gpt4 book ai didi

javascript - Rails 3 转义 html 标签在浏览器中作为 JSON 时未转义

转载 作者:行者123 更新时间:2023-12-03 06:07:44 24 4
gpt4 key购买 nike

我有一个 Rails 3.2 应用程序,它使用 ActiveResource 与第三方 XML API 进行交互以获取某些数据。我们希望确保第三方 XML 中不存在 XSS,因此我们启用了:

ActiveSupport.escape_html_entities_in_json = true 

这似乎适用于 XML 数据,并将潜在危险的脚本调用中的 < 标记转换为 <,如下所示:

&lt;script>alert('xss')&lt;/script>

(不知道为什么它只逃避了 lt TBH,但这似乎是设计使然)

问题是,当我将该 XML 转换为 JSON 并发送到浏览器时,浏览器将其视为未转义。发送到浏览器的 JSON 字符串如下所示:

\u003Cscript\u003Ealert('xss')\u003C/script\u003E"

任何人都可以解释为什么浏览器将其转换回未转义的字符串,并建议解决方法吗?

FWIW 我正在使用 Backbone、Jquery、JST 和 EJS

最佳答案

如果发送到浏览器的字符串与问题中的字符串类似,那么浏览器不会将其转换回来,它已经以未转义的方式发送了。但是,我认为服务器不需要对其进行编码,因为它只是数据,以中间数据格式 JSON 发送。它已正确编码为 JSON。不过,当您将其插入客户端上的 DOM 时,您必须小心。

在模板中,确保使用 <%- 而不是 <%=,它应该没问题除非您生成某种类型的 javascript 代码,但这可能是一种边缘情况。

您还可以选择按照您最初要求的方式在响应中对其进行编码,在这种情况下,您应该研究如何将其从 XML 转换为 JSON。但请注意,不同的上下文可能需要不同的编码(尤其是写入纯 HTML 与 Javascript 上下文中的编码要求非常不同),并且发送数据的服务器可能不(不想)知道客户端想要做什么它。

关于javascript - Rails 3 转义 html 标签在浏览器中作为 JSON 时未转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com