问题标签 [dompurify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
29383 浏览

javascript - 有必要清理 JSON 吗?

我认为不信任任何输入是网络上众所周知的最佳实践。这句话

“所有输入都是邪恶的。”

可能是关于输入验证的引用最多的引用。现在,对于 HTML,您可以使用诸如DOMPurify之类的工具对其进行清理。

我的问题是,如果我有一个运行 Express 和body-parser中间件来接收和解析 JSON 的 Node.js 服务器,我是否还需要运行任何清理程序?

我的(也许是天真的?)想法是 JSON 只是数据,没有代码,如果有人发送无效的 JSON,body-parser(JSON.parse()内部使用)无论如何都会失败,所以我知道我的应用程序将收到一个有效的 JavaScript 对象. 只要我不运行 eval 或调用函数,我应该没问题,不是吗?

我错过了什么吗?

0 投票
2 回答
1565 浏览

angularjs - 用 DOMPurify 替换 Angular 中的 $sanitize 实现?

是否可以将 angularjs(版本 1.5.x)中 $sanitize 函数的本机实现替换为使用DOMPurify的自定义实现?

我的目标是能够编写ng-bind-html=value并在清理 HTML 时使用 DOMPurify。

0 投票
2 回答
2276 浏览

javascript - NodeJS 需要一个文件中的所有模块,好习惯吗?

从设计或安全的角度来看,我想知道是否有任何缺点,requires()将我需要的所有模块放在一个文件中,然后导出它们。这将使我不必跟踪每个文件中的所有模块。

例子:

然后在我需要它们的任何文件中,我只需要

我不知道使用这样的构造是否有任何缺点。由于模块都加载到全局空间中,我没有看到我的方法有任何缺点吗?

0 投票
1 回答
17381 浏览

javascript - 如何在前端 js 文件中安装、导入和使用 DOMPurify?

这更像是“您能否确认这是正确的”类型的问题,因为我认为我在编写问题的过程中解决了它,但希望它对其他有点犹豫的人有所帮助实施DOMPurify

精简版

DOMPurify在前端 js 文件中像这样导入和使用是否安全/有效:

详细版本

目前我的主要前​​端 js 文件使用这些约定导入:

我尝试了以下方法:

字符串示例来自这里:

https://github.com/cure53/DOMPurify#some-purification-samples-please

并使用SAFE_FOR_JQUERY此处提到的标志:

https://github.com/cure53/DOMPurify#can-i-configure-it

一切都按预期记录,即:

所以这很好。

问题

官方 DOMPurify 自述文件显示了以下导入和使用方式:

即使没有列出我实现它的方式,这仍然是一种安全/有效的方式吗:

PS,如果需要上下文...

实现场景是:

01) 用户以 span 开头:

02) 单击跨度时,会将 的值data-previous_value添加到input替换 的元素中span

03) 用户修改input元素中的文本并单击保存。

04) 我使用markdown-it并将html选项设置为falsemarkdown-it-attrs(添加 css 样式)和markdown-it-span(定义spans)将任何 markdown 呈现为 html(链接、图像、类、跨度等)。

05) 新值被添加到一个新span元素(用 渲染markdown-it)和data替换该input元素的属性(未渲染)。

06) 新的、未渲染的值MongoDB通过Node/Express.

例如,以下输入:

被转换成这个 html:

我正在考虑在输入DOMPurify之前markdown-it(在步骤 04 之前)对输入进行消毒。

0 投票
2 回答
1229 浏览

javascript - 在 DomPurify 中允许 HTML 注释

我想使用 DOMPurify 清理一些 HTML 内容,但我想保留 HTML 注释。那可能吗?

您可以在此示例中看到它的作用- 如果您输入带有注释的标记,则注释将被删除。

DOMPurify 似乎非常可配置,但文档没有提到使用什么术语将 HTML 注释指定为允许的标记。

0 投票
1 回答
429 浏览

node.js - 为什么在运行 npm update 时不是所有节点包都更新到最新版本?

环境

Windows 10 家庭
节点 v10.13.0
NPM 6.4.1

期望的行为

更新所有节点包。

实际行为

并非所有软件包都在更新。

我试过的

npm update根据这篇文章中的信息:

npm install 与 update - 有什么区别?

运行前npm update

package.json运行前npm update

运行后npm update

为什么这些包在运行时没有更新到最新版本npm update

如何将它们更新到最新版本?

语境

我已经离开一个开发项目大约 3 个月了,当尝试npm start在本地机器上运行时出现错误:

似乎event‑stream节点包被“劫持”(请参阅​​相关的github 问题)。

我的防病毒程序Bitdefender确实删除了有问题的文件:

所以我决定更新所有节点包,希望有问题的包会被删除并更新到最新的“干净”版本。

0 投票
1 回答
286 浏览

javascript - Symfony 3.4 - Webpack Encore 和 DOMPurify

我正在尝试将 DOMPurify 集成到我的 Symfony 项目中,但我不断收到

DOMPurify 未定义

在我的浏览器控制台中。在我的app.js我有:

在我的模板中:

我不确定如何正确地将其集成到我的项目中。有任何想法吗?

0 投票
1 回答
239 浏览

google-chrome - 我在 Chrome 77 上的网站不加载任何数据,但在 Chrome 76 上运行良好

更糟糕的是,我的测试通过了使用 Chrome 77 和 Chromedriver 77(测试通过,数据加载到网页等)。只有当我手动启动 Chrome 77 浏览器并对其进行测试时,它才会失败。

这基本上是我的代码在做什么:

问题是在 Chrome 77param === "View"中是假的!但单独使用 Chrome 77 时,这并不是错误的。

0 投票
0 回答
704 浏览

javascript - 为什么带有 SAFE_FOR_TEMPLATES 的 DOMPurify 会删除数据属性?

我偶然发现了DOMPurify的一个奇怪行为,在data-*使用默认选项进行清理时属性会留下,但在使用该SAFE_FOR_TEMPLATES选项时会被剥离。此外,包含模板的整个文本将被删除,而不仅仅是模板部分。

这些是错误还是功能?这些的理由是什么?

0 投票
0 回答
1553 浏览

javascript - DOMPurify 在标签之间保留文本 || 仅删除标签

我有一个测试字符串。

我正在尝试删除所有 html 内容和{{ , }} , {% , %}。但我想保留有用的信息并保持文字不变。

空字符串中的干净结果。我应该使用什么配置来做到这一点?