在 JavaScript 中取消转义 HTML 实体?

2024-01-27

我有一些与 XML-RPC 后端通信的 JavaScript 代码。 XML-RPC 返回以下形式的字符串:

<img src='myimage.jpg'>

但是,当我使用 JavaScript 将字符串插入 HTML 时,它们会按字面意思呈现。我没有看到图像,我确实看到了字符串:

<img src='myimage.jpg'>

我的猜测是 HTML 正在通过 XML-RPC 通道进行转义。

如何在 JavaScript 中对字符串进行转义?我尝试了此页面上的技术,但没有成功:http://paulschreiber.com/blog/2008/09/20/javascript-how-to-unescape-html-entities/ http://paulschreiber.com/blog/2008/09/20/javascript-how-to-unescape-html-entities/

还有哪些其他方法可以诊断该问题?


这里给出的大多数答案都有一个巨大的缺点:如果您尝试转换的字符串不可信,那么您最终会得到一个跨站脚本 (XSS) 漏洞 https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations。对于函数中的接受的答案 https://stackoverflow.com/a/1912522/785541, 考虑以下:

htmlDecode("<img src='dummy' onerror='alert(/xss/)'>");

这里的字符串包含一个未转义的 HTML 标签,因此不需要解码任何内容htmlDecode函数实际上会运行字符串内指定的 JavaScript 代码。

这可以通过使用来避免DOM解析器 https://developer.mozilla.org/en-US/docs/Web/API/DOMParser这是支持的所有现代浏览器 https://developer.mozilla.org/en-US/docs/Web/API/DOMParser#Browser_compatibility:

function htmlDecode(input) {
  var doc = new DOMParser().parseFromString(input, "text/html");
  return doc.documentElement.textContent;
}

console.log(  htmlDecode("&lt;img src='myimage.jpg'&gt;")  )    
// "<img src='myimage.jpg'>"

console.log(  htmlDecode("<img src='dummy' onerror='alert(/xss/)'>")  )  
// ""

该函数保证不会运行任何 JavaScript 代码作为副作用。任何 HTML 标签都将被忽略,仅返回文本内容。

兼容性说明: 解析 HTMLDOMParser至少需要 Chrome 30、Firefox 12、Opera 17、Internet Explorer 10、Safari 7.1 或 Microsoft Edge。因此,所有不支持的浏览器都已经过时了,截至 2017 年,唯一偶尔仍能在野外看到的浏览器是较旧的 Internet Explorer 和 Safari 版本(通常这些浏览器的数量还不足以打扰)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中取消转义 HTML 实体? 的相关文章

  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 无法实例化模块 [$injector:unpr] 未知提供程序:$routeProvider

    我从 AngularJS 升级时收到此错误1 0 7 to 1 2 0rc1 ngRoute 模块不再是核心的一部分angular js文件 如果您继续使用 routeProvider 那么您现在需要包括angular route js在你
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 如何使用 Angular JS 单击时将 html 模板附加到 div/指令?

    我有这种情况
  • 同页锚链接到部分 id 在 IE8 中不起作用

    我有一个带有导航的单页 HTML5 网站 可以将用户引导至该部分 在除 IE8 之外的所有浏览器中都可以正常工作 IE8 不执行任何操作 我所拥有的虚拟版本 a href about About a a href work Work a a
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • XML-RPC 和 SOAP 有什么区别?

    我从来没有真正理解为什么 Web 服务实施者会选择其中之一 XML RPC 通常出现在较旧的系统中吗 任何有助于理解这一点的帮助将不胜感激 差异 SOAP 更强大 并且更受软件工具供应商 MSFT NET Java 企业版等 的青睐 SOA
  • 如何适应特定子元素的宽度?

    problem 我正在尝试创建一个技能表 我无法问下一个问题为什么 所以我创建了一个新帐户并询问 当前状态 我想将元素的宽度与 meter 也就是说 如何设定区块的标准 meter 子元素 在上面的 gif 中 img meter 我想要保
  • 循环遍历元素并逐步为每个元素应用 CSS 规则

    我有一个网格布局 每个网格布局中都有不同数量的元素 我想动态添加内联grid column通过循环遍历 div 中存在的每个元素的 CSS 规则 ul 与一类 list 所以 HTML 代码的输出需要是 ul class list ul u
  • html css 下拉菜单

    这是我第一次在 Stack Overflow 上发帖 我不熟悉论坛发帖规定 所以请让我知道我做错了什么 我在论坛中研究过这个问题 但我所遇到的一切都没有给我明确的答案 我试图从 新闻 元素创建一个下拉菜单 但在运行代码时我从未得到任何可见的
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • Jquery 在 DIV 中进行多重加载

    这是我的代码 right load textes html nicolas right load textes html antoine 问题是内容divantoine覆盖了右边div nicolas加载的内容div div right l
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • 禁用特定 div 上的 Tab 键

    我有以下结构 div div Some content div div Some content div div 我想 禁用 div2 上的 tab 键 我的意思是按下 tab 键时 div2 的元素不会获得焦点 有没有简单的方法可以使用
  • HTML 元素的默认背景颜色是什么?白色还是透明?

    我只是被一个简单的问题困住了 想弄清楚 HTML 元素的默认背景颜色是什么 是白色的还是透明的 默认背景颜色是透明的 看这里 https developer mozilla org en docs Web CSS background co
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • HTML 输入 - 名称与 ID [重复]

    这个问题在这里已经有答案了 使用 HTML 时
  • 如何在表格列标题处垂直旋转文本

    我用过这个数据表 http www datatables net 在我的网页上 这是fiddle http jsfiddle net fxju7 2 链接我放置代码的地方 我想要 第一个数字第二个数字列应该垂直旋转 我已经做到了 但是 问题

随机推荐

  • 为 Tegra GPU 编程需要什么

    我可以在 CUDA 处理器 Tegra 1 2 上开发应用程序吗 为此我需要什么以及 Tegra 1 2 CUDA 功能是什么 我在Eclipse for Android中发现只有NVIDIA Debug Manager用于开发 但不知道他
  • 如何在eclipse中添加java代码的快捷键

    假设我输入 sout 智能感知应将其扩展为 System out println 有没有办法添加这样的模板 该功能在 Eclipse 中称为 代码模板 您可以使用以下方式添加模板 窗口 gt 首选项 gt Java gt 编辑器 gt 模板
  • 将 LEFT OUTER JOIN 查询转换为 Django orm queryset/query

    给定 PostgreSQL 9 2 10 Django 1 8 python 2 7 5 和以下模型 class restProdAPI models Model rest id models PositiveIntegerField pr
  • 正则表达式仅允许 1 到 12 之间的数字

    正则表达式仅允许 1 到 12 之间的数字 我在尝试 12 1 9 d 但它不起作用 请帮助 因为我是正则表达式的新手 就像是 1 9 1 012 将正则表达式锚定在字符串的开头 1 9 火柴1 to 9 交替 匹配上一个匹配或下一个匹配
  • 比较时间值

    我想要一个比较时间的方法 例如 如果 Atime 发生早于 Btime 做某事 我会使用 CompareTime 函数 但我对该函数的问题是 粗括号 中所说的内容 见下文 调用CompareTime比较A和B指定的两个TDateTime值
  • 为什么单层感知器在没有归一化的情况下收敛得这么慢,即使裕量很大?

    在我确认我的结果后 这个问题完全被重写了 Python Notebook可以找到here https www dropbox com s pwvfx9hbxzkym5r perceptron py dl 0 用别人写的一段代码 可以找到he
  • 将自定义选项传递给 symfony2 表单

    在 symfony 1 4 中 可以通过表单的选项参数化表单类定义 有什么方法可以将自定义选项传递给我的自定义表单类型 我尝试使用的选项参数buildForm方法 但我不太确定这个数组是什么 显然它不是我想要的 谢谢 解决方案很简单 如果您
  • Android 将文本绘制到中心矩形中,并根据需要裁剪它

    我想将文本绘制到中心矩形 水平和垂直 如果文本太多 会裁剪掉不适合矩形的文本 我尝试这样做这个例子显示 http b ivity asia 2010 12 29 using android text staticlayout 但没有运气 有
  • git 中“提交引入的更改”是什么意思

    我到处都看到这样的内容 cherry pick 应用提交引入的更改 我这样做了 在 master 中创建了这个文件 File 1 Content Footer 然后分支到branch2并提交更改 File 1 Content Edit 1
  • 获取 blob 的 url 时出现 image/png 的未知格式错误

    我收到此错误 ActionController UnknownFormat ErrorPagesController not found is missing a template for this request format and v
  • AttributeError:“数据集”对象没有属性“值”

    使用包读取 hdf5 文件时出现此错误 dataset value Error Traceback most recent call last File train py line 163 in
  • 静态数组与动态数组的 C/C++ 性能

    当性能对应用程序至关重要时 是否应该考虑是否在堆栈上声明数组还是在堆上声明数组 请允许我概述一下为什么会想到这个问题 由于 C C 中的数组不是对象并且会退化为指针 因此编译器使用提供的索引来执行指针算术来访问元素 我的理解是这个程序dif
  • Microsoft.Internal.Assumes+InternalErrorException:发生内部错误

    我在尝试加载 Visual studio 2012 时遇到了此错误 遇到了异常 这可能是由扩展引起的 并在中给出了附加信息的位置C Users AppData Roaming Microsoft VisualStudio 11 0 Acti
  • 无法执行tools\android.bat:解决方法

    当我尝试在 Eclipse 中打开 SDK 管理器时 它说很快就会打开 但从未打开 我尝试打开 exe 文件 但它显示一条错误消息 无法执行tools android bat 系统找不到指定的文件 我的路径环境变量将其引导至工具文件夹 这是
  • 为什么我会得到这些连字符?

    我正在尝试使用 div 制作 3 个按钮 并使用百分比水平对齐它们 我设法做到了这一点 但我在 div 之间得到了这些连字符 仅当我使用 display inline block 时 连字符才会出现 但如果没有它 我无法以这种方式对齐它们
  • 定义取决于缩进级别的语法区域

    我正在尝试在 Vim 中为 reStructuredText 构建一个更轻的语法文件 首先 文字块在行尾遇到 时开始 I ll show you some code if foo bar then do something end Lite
  • 我可以使用 BroadcastReceiver 的回调方法吗?

    在学习使用 Android 中的 BroadcastReceiver 类时 我编写了一个小程序来接收电池充电状态并将其写入活动中的三个 TextView 字段 不过 我已将 BroadcastReceiver 作为一个单独的类 以使其更加简
  • 如何将一个 xib 中的 UIViewController 视图嵌入到另一个 xib 的视图中?

    MyViewController xib 将 File s Owner 类设置为MyViewController 的子类UIViewController 和文件所有者视图连接到UIView包含一些子视图 OtherViewControlle
  • 用点填充行中剩余的空白(多行文本)

    I m trying to get an html page to look something like this 我已经非常接近了 但我想再迈出一步 尝试用点填充文本中的所有空白 直到行尾 全部不用js 我找到了针对单行元素的不同解决方
  • 在 JavaScript 中取消转义 HTML 实体?

    我有一些与 XML RPC 后端通信的 JavaScript 代码 XML RPC 返回以下形式的字符串 img src myimage jpg 但是 当我使用 JavaScript 将字符串插入 HTML 时 它们会按字面意思呈现 我没有