整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

DOMPurify:一个只针对 DOM 的、超快的、宽容的 HTML XSS清理工具

OMPurify 是一个只针对 DOM 的、超快的、超容忍的 HTML、MathML 和 SVG 跨站脚本清理器。

DOMPurify 于 2014 年 2 月发布,目前已经达到 v3.0.8 版本。

DOMPurify 是用 JavaScript 编写的,在所有现代浏览器(Safari(10 ),Opera(15 ),Edge,Firefox 和 Chrome - 以及几乎所有使用 Blink,Gecko 或 WebKit 的浏览器)上都可以运行,它不会在 MSIE 或其他旧版浏览器上崩溃。

注意 DOMPurify v2.4.7 是支持 MSIE 的最新版本。对于兼容 MSIE 的重要安全更新,请使用 2.x 分支。

我们的自动化测试现在覆盖了 19 个不同的浏览器,未来还会覆盖更多。我们还覆盖了 Node.js v16.x, v17.x, v18.x 和 v19.x,在 jsdom 上运行 DOMPurify。已知的旧版本也能工作,但是嘿......不保证。

DOMPurify 是由在 Web 攻击和 XSS 方面有广泛背景的安全人员编写的。不要害怕。更多细节请阅读我们的安全目标和威胁模型。

它有什么作用?

DOMPurify 净化 HTML 并防止跨站脚本攻击。你可以用充满脏 HTML 的字符串来喂养 DOMPurify,它会返回一个干净的 HTML 字符串(除非另外配置)。DOMPurify 会剥离所有包含危险 HTML 的内容,从而防止跨站脚本攻击和其他脏东西。它也非常快。我们使用浏览器提供的技术,并将它们转换为跨站脚本过滤器。你的浏览器越快,DOMPurify 就会越快。

我如何使用它?

这很简单,只需要在你的网站上包含 DOMPurify。

使用未压缩的开发版本

<script type="text/javascript" src="src/purify.js"></script>

使用压缩并测试过的生产版本(源码映射可用)

<script type="text/javascript" src="dist/purify.min.js"></script>

之后,您可以通过执行以下代码来清理字符串:

const clean = DOMPurify.sanitize(dirty);

或者,如果你喜欢使用 Angular 或类似的框架,可以这样:

import * as DOMPurify from "dompurify";

const clean = DOMPurify.sanitize("<b>hello there</b>");

可以使用 innerHTML 将生成的 HTML 写入 DOM 元素,或者使用 document.write() 将结果写入 DOM。这完全取决于你。请注意,默认情况下,我们允许 HTML、SVG 和 MathML。如果您只需要 HTML(这可能是一个非常常见的用例),您也可以轻松进行设置:

const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });

在服务器上运行 DOMPurify

DOMPurify 技术上也支持 Node.js 服务器端,我们的支持会尽量跟随 Node.js 的发布周期。

在服务器上运行 DOMPurify 需要一个 DOM,这可能并不奇怪,通常,jsdom 是首选工具,我们强烈推荐使用最新版本的 jsdom。

为什么?因为旧版本的jsdom在某些方面有漏洞,即使DOMPurify100%正确,也会导致跨站脚本攻击。例如,jsdom v19.0.0中的攻击向量在jsdom v20.0.0中得到了修复 - 因此,我们强烈建议使用最新的jsdom。

对于 jsdom(请使用最新版本),这应该可以做到:

const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');

const window = new JSDOM('').window;
const DOMPurify = createDOMPurify(window);
const clean = DOMPurify.sanitize('<b>hello there</b>');

或者,如果你更喜欢使用导入:

import { JSDOM } from 'jsdom';
import DOMPurify from 'dompurify';

const window = new JSDOM('').window;
const purify = DOMPurify(window);
const clean = purify.sanitize('<b>hello there</b>');


DOMPurify:一个只针对 DOM 的、超快的、宽容的 HTML XSS清理工具
原文链接:https://juejin.cn/post/7326868147079987254

报道称“浏览器内核有上千万行代码”,浏览器内核真的很复杂吗?


HTML的设计都脏掉了,谁也搞不清楚什么才是标准。网页的各种玩意儿也是。现在浏览器内核的情况是它要兼容各种奇奇怪怪的东西,还要正确显示,而且,因为积重难返,浏览器内核厂商也完全参与到了规则的制定中。我觉得这些东西设计得足以令人类自己感到羞耻。

W3C要是真的有毅力,足够明智的话,就应该知道不把标准推倒重来不行了,这东西已经复杂和不规律到无人可以理解了。当然,祖传代码的确应该祖传。

其实这些东西设计的关键是大家都能认同,像Content MathML,没有浏览器支持,Presentation MathML呢,就连支持的号称最好的Firefox,我试过了,感觉还差的远,最后导致大家在网页排版数学时都是自己想骚套路,就这标准,竟然还进了HTML5。像数据交换现在很多用json,其实可能CSEXP改改可能更好,但压根没人用。当年LISPER们搞了个DSSSL,虽然好,最后也没能得到广泛认可(虽然它的失败应该附属于SGML的失败,但DSSSL也可以改改用于XML,没毛病吧)。因为历史原因,W3C里存留有很多死掉的东西,它们并不是不好,只是没有人用,或者没人会实现,没人想实现。

我现在已经没什么所谓了,就希望哪天推倒重来,设计得差点就差点了,只要能扩展,设计得规律一些就可以了,大家就按着这个标准来,那样浏览器内核的垄断时代真的就结束了。

以下是四位网友对此的看法

网友一:网页世界不存在推倒重来,现在唯一可能的是Web Assembly代替js,然后利用浏览器的2d和3d渲染能力再造一个新渲染层,就像当初的flash一样,逐渐淘汰html。

网友二:推到重来是不可能的,只能让时间去消化一切。就是等过些年,再把落后的设计淘汰掉不再兼容,虽然短期内会很棘手(太复杂了难免各种bug),但这是最现实的办法

网友三:推倒重来是不可能的,这违反了网页的基本原则。没人敢制定不向下兼容的网页标准,就算制定了,浏览器也不敢照着实现。谁不兼容谁就死。

网友四:推倒重来你看看有没有用户使用,开发者愿不愿意支持,企业愿不愿意付出额外的成本,只能说太难

#不想敲代码# #干净的搜索引擎# #代码解锁# #前端算程序猿吗# #软件如何开发# #API版本# #it先疯# #好用的开源软件# #程序员不能噶# #系统开发案例#

在11月份的时候就看到服务器有一个安全威胁,通过提示的链接看到名字叫脏牛漏洞,显示是高危漏洞。我们先来看看啥是脏牛漏洞

漏洞危害:黑客可以通过远程入侵获取低权限用户后,在服务器本次利用该漏洞在全版本Linux系统上实现本地提权,从而获取到服务器root权限。

漏洞利用条件:黑客可以通过远程入侵获取低权限用户后,才能进一步在操作系统本地利用该漏洞。

漏洞影响范围:Linux Kernel >= 2.6.22 的所有 Linux 系统(意味着从 2007 年发布 2.6.22 版本开始,直到2016年10月18日为止,这中间发行的所有 Linux 系统都受影响。)

虽然对于服务器运维来说大熊也是个非常小白的业余选手,但是针对这种高危漏洞还是不惜一切代价要修复的。

服务器版本:linux

操作系统:CentOS 6.5 64位

漏洞修复方案提示:

因为涉及到操作系统内核的升级,我们强烈建议您:正确关闭正在运行的服务,并做好业务数据备份工作。同时创建服务器磁盘快照,避免修复失败造成不可逆的影响。

如果您的服务器安装了第三方的防护软件有可能会导致内核升级不成功,例如:云锁、安全狗,建议您先卸载后升级内核成功后再安装启用。

根据漏洞修复提示操作步骤:

1、卸载云锁,之前在不卸载云锁的情况下也尝试修复过,但是貌似没什么效果。

直接在服务器后台卸载云锁执行命令:echo y|/usr/local/yunsuo_agent/uninstall

看到:Uninstall Success说明云锁卸载成功;

2、CentOS 5/6/7 系列操作系统修复步骤

阿里云已经更新了CentOS 5/6/7Aliyun mirror源,可以直接在默认配置下,您可以更新软件列表,随后一键升级内核:

1).检查是否有内核升级包:yum check-update |grep kernel

2).升级内核:yum update kernel

3).确认下新版本的内核或 initrd/initramfs 是否有xen-vbd和virtio_blk驱动:

lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'

4).服务器重启,然后检查验证是否修复成功。

因为在后台也看不懂一些代码提示,反正经过以上四个步骤,验证后发未发现风险项。

对一些大神来说,这种修复简直太小儿科,但是不得不说,对一般建站的同学来说,如果没有服务器运维的经验最好不好选择服务器,南通大熊认为一般的网站使用空间就够用了,服务器运维太费时费力,如果有些经验还好一些。

记得在漏洞修复完成以后重新安装一下云锁。因为我的是安装的WDCP后台,直接在后台安装云锁以后WDCP后台打不开了,重新启动服务器就可以了。

针对“脏牛”漏洞修复远不止这么简单,详细修复教程请根据不同的操作系统参考:https://help.aliyun.com/knowledge_detail/44786.html进行修复。