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 技術上也支持 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進行修復。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。