问题标签 [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.
javascript - 有必要清理 JSON 吗?
我认为不信任任何输入是网络上众所周知的最佳实践。这句话
“所有输入都是邪恶的。”
可能是关于输入验证的引用最多的引用。现在,对于 HTML,您可以使用诸如DOMPurify之类的工具对其进行清理。
我的问题是,如果我有一个运行 Express 和body-parser中间件来接收和解析 JSON 的 Node.js 服务器,我是否还需要运行任何清理程序?
我的(也许是天真的?)想法是 JSON 只是数据,没有代码,如果有人发送无效的 JSON,body-parser(JSON.parse()
内部使用)无论如何都会失败,所以我知道我的应用程序将收到一个有效的 JavaScript 对象. 只要我不运行 eval 或调用函数,我应该没问题,不是吗?
我错过了什么吗?
angularjs - 用 DOMPurify 替换 Angular 中的 $sanitize 实现?
是否可以将 angularjs(版本 1.5.x)中 $sanitize 函数的本机实现替换为使用DOMPurify的自定义实现?
我的目标是能够编写ng-bind-html=value
并在清理 HTML 时使用 DOMPurify。
javascript - NodeJS 需要一个文件中的所有模块,好习惯吗?
从设计或安全的角度来看,我想知道是否有任何缺点,requires()
将我需要的所有模块放在一个文件中,然后导出它们。这将使我不必跟踪每个文件中的所有模块。
例子:
然后在我需要它们的任何文件中,我只需要
我不知道使用这样的构造是否有任何缺点。由于模块都加载到全局空间中,我没有看到我的方法有任何缺点吗?
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
选项设置为false
和markdown-it-attrs(添加 css 样式)和markdown-it-span(定义spans
)将任何 markdown 呈现为 html(链接、图像、类、跨度等)。
05)
新值被添加到一个新span
元素(用 渲染markdown-it
)和data
替换该input
元素的属性(未渲染)。
06)
新的、未渲染的值MongoDB
通过Node/Express
.
例如,以下输入:
被转换成这个 html:
我正在考虑在输入DOMPurify
之前markdown-it
(在步骤 04 之前)对输入进行消毒。
node.js - 为什么在运行 npm update 时不是所有节点包都更新到最新版本?
环境
Windows 10 家庭
节点 v10.13.0
NPM 6.4.1
期望的行为
更新所有节点包。
实际行为
并非所有软件包都在更新。
我试过的
npm update
根据这篇文章中的信息:
运行前npm update
:
package.json
运行前npm update
:
运行后npm update
:
为什么这些包在运行时没有更新到最新版本npm update
?
如何将它们更新到最新版本?
语境
我已经离开一个开发项目大约 3 个月了,当尝试npm start
在本地机器上运行时出现错误:
似乎event‑stream
节点包被“劫持”(请参阅相关的github 问题)。
我的防病毒程序Bitdefender确实删除了有问题的文件:
所以我决定更新所有节点包,希望有问题的包会被删除并更新到最新的“干净”版本。
javascript - Symfony 3.4 - Webpack Encore 和 DOMPurify
我正在尝试将 DOMPurify 集成到我的 Symfony 项目中,但我不断收到
DOMPurify 未定义
在我的浏览器控制台中。在我的app.js
我有:
在我的模板中:
我不确定如何正确地将其集成到我的项目中。有任何想法吗?
google-chrome - 我在 Chrome 77 上的网站不加载任何数据,但在 Chrome 76 上运行良好
更糟糕的是,我的测试通过了使用 Chrome 77 和 Chromedriver 77(测试通过,数据加载到网页等)。只有当我手动启动 Chrome 77 浏览器并对其进行测试时,它才会失败。
这基本上是我的代码在做什么:
问题是在 Chrome 77param === "View"
中是假的!但单独使用 Chrome 77 时,这并不是错误的。
javascript - 为什么带有 SAFE_FOR_TEMPLATES 的 DOMPurify 会删除数据属性?
我偶然发现了DOMPurify的一个奇怪行为,在data-*
使用默认选项进行清理时属性会留下,但在使用该SAFE_FOR_TEMPLATES
选项时会被剥离。此外,包含模板的整个文本将被删除,而不仅仅是模板部分。
这些是错误还是功能?这些的理由是什么?
javascript - DOMPurify 在标签之间保留文本 || 仅删除标签
我有一个测试字符串。
我正在尝试删除所有 html 内容和{{ , }} , {% , %}。但我想保留有用的信息并保持文字不变。
空字符串中的干净结果。我应该使用什么配置来做到这一点?