DOMPurify,增加網站對 XSS 攻擊的防護力

閱讀時間約 2 分鐘

本篇要解決的問題

最近看了胡立大大的〈Beyond XSS:探索網頁前端資安宇宙〉(推薦前端工程師必看),才發現之前寫程式時很少注意到會不會容易被人攻擊這塊。

記得很久很久以前,久到 Firebase 還沒被 Google 併購以前,那時寫了一個送出表單後,會在頁面上變成賀卡的功能,就有人寫上了 <script>alert(false)</script> 在測試,然後好心的回覆說這個表單功能是會被攻擊的,也是那次以後才知道原來一不注意,input 可以被寫入程式碼。

本篇推薦使用的 DOMPurify,就是一個可以防範這種問題的套件,也是在胡立大大的文章裡知道的,本篇只會提供使用範例,詳細解說請點擊上面的連結。

本篇提供的 Demo:

https://letswritetw.github.io/letswrite-dompurify/


安裝

DOMPurify 的官方說明文件:cure53/DOMPurify

CDN

<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.0.6/purify.min.js"></script>

ES6

// 先執行命令進行安裝
$ npm install dompurify

// JS 檔案中 import
import * as DOMPurify from 'dompurify';

使用

使用的時機點有蠻多的,比方從網址上抓出參數後、從 API 取回資料、表單要送出前,都可以使用,防止收到攻擊性的語法。

DOMPurify 使用的方式也很簡單,就一行:

const clean = DOMPurify.sanitize(要處理的值);

比方我們有一個 input:

<input type="text" id="userName">

要送給後端時,就先用 DOMPurify 處理過一次:

const input = document.getElementById('userName');
const userName = DOMPurify.sanitize(input.value);

最後再把 userName 送出去,安全上會多一層保障。


Demo 及原始碼

本篇的 Demo 及原始碼都放在 GitHub 上了。

Demo 主要是輸入值以後,會看到 DOMPurify 執行後的結果。

Demo:https://letswritetw.github.io/letswrite-dompurify/

原始碼:https://github.com/letswritetw/letswrite-dompurify

9會員
19Content count
沙龍到底是…做什麼用的勒?
留言0
查看全部
發表第一個留言支持創作者!
Let's Write 的沙龍 的其他內容
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
本篇大綱:本篇要解決的問題。取得 Postman Collection Access Key。Google Apps Script 上寫備份程式碼。設定自動備份。
這篇文章教你如何在本機使用 Gitea 架設 Git Server。內容涵蓋了安裝 Docker、設定和安裝 Gitea 的 dokcer-compose.yml、Gitea 的安裝流程,以及如何刪除安裝的 Gitea。文章也包含了一個 Docker 的彩蛋,教你如何清理安裝或未清理的緩存。
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
探討如何免費建立自己的網站,結合 WordPress 和 Cloudflare Pages。文章涵蓋從本機安裝 WordPress、產出靜態檔案,到將檔案部署到 Cloudflare Pages 的完整流程,並探討其優點和缺點。
探索如何使用 OneDev 在本機快速架設 Git Server。本文詳細介紹了安裝 OneDev 和 Docker 的步驟,並提供了實用的圖片和說明,幫助你輕鬆在本機建立和管理 Git Server。
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
本篇大綱:本篇要解決的問題。取得 Postman Collection Access Key。Google Apps Script 上寫備份程式碼。設定自動備份。
這篇文章教你如何在本機使用 Gitea 架設 Git Server。內容涵蓋了安裝 Docker、設定和安裝 Gitea 的 dokcer-compose.yml、Gitea 的安裝流程,以及如何刪除安裝的 Gitea。文章也包含了一個 Docker 的彩蛋,教你如何清理安裝或未清理的緩存。
深入了解使用 Cookie 實現客戶端數據存儲的技巧和最佳實踐。本文詳細解釋了 Cookie 的基本概念、限制、原生寫法,並推薦了一個實用的 JavaScript Cookie 套件,附帶實用 Demo 和原始碼。
探討如何免費建立自己的網站,結合 WordPress 和 Cloudflare Pages。文章涵蓋從本機安裝 WordPress、產出靜態檔案,到將檔案部署到 Cloudflare Pages 的完整流程,並探討其優點和缺點。
探索如何使用 OneDev 在本機快速架設 Git Server。本文詳細介紹了安裝 OneDev 和 Docker 的步驟,並提供了實用的圖片和說明,幫助你輕鬆在本機建立和管理 Git Server。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
社群行銷想必你已經在做了,但很多商家都忽略這件事...... 除了在社群貼文、廣告素材中,放入官網 / 網路預約頁面的連結之外,其實還有一個絕佳的曝光位置,很容易在宣傳的過程中被忽略,那就是 Facebook 粉絲專頁上的「行動呼籲按鈕」。
Thumbnail
現在歐美國家,有一半以上的人是因為網路認識、約見面、漸漸產生感情,最後決定結婚。網路上傳遞的形象、個性,會決定別人想不想跟你碰面。關於自己的網路資訊傳遞,可能會在許多方面影響你的一生。
Thumbnail
要用 Redbubble 賺到被動收入沒有那麼簡單或是要靠上傳設計到 Redbubble 來當作主業也是非常困難的,原因的話真的有很多種,包跨 Redbubble 的分潤,眾多的競爭對手等。 如果要在 Redbubble 上成功必須定時的上傳有好品質的設計使用 Redbubble 上傳設計賺錢
Thumbnail
◇◆ 今天的主題 ◆◇ ◆ Print On Demand 是甚麼? ◆ Print On Demand平台有哪些種類? ◆ POD 平台的優點 ◆ POD 平台的缺點 ◆ 進入 Print On Demand需要多少錢呢? ◆ Print On Demand 平台的選擇 一起增加被動收入吧!
Thumbnail
你是怎麼估算自己的FIRE目標的呢? 大叔總是強調你只需要【買進並持有指數化投資工具】就可以財務獨立,可是當你透過定期定額將資產順利往上增加時,你的FIRE目標也會跑前走,沒錯吧?原因就是通膨。 如果你有記帳的習慣,那就容易解決了。以大叔自己為例,先調出2017年-2020的記帳數據,將總支出扣除退
好不容易把客人招攬到店裡來了,那要如何讓他買單呢?其實網路購物跟實體商店的消費者心理是大同小異的;不外乎是兩個重要的因素: 良好的購物體驗 刺激消費衝動 試著想想,當我們走進高級精品店時,店員是不是在你一進門,就很親切地打聲招呼,然後請你坐在舒服的沙發上,詢問需不需要飲料或小點心,並遞上
Thumbnail
對於網路電商來說,購物車棄車率是個非常重要的指標,因為這代表著你流失的客戶率,也就是在行銷漏斗中已經走到最後一步的這些顧客們,決定要放棄的比率。哈利熊今天來分享電商幾個技巧防止顧客不買單!
Thumbnail
<p>除了薪資收入,試著建立網站、部落格,透過基本的SEO,開始獲取網站流量,並利用這些流量產生收入,或是打造個人品牌,創造更多商機。</p>
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
社群行銷想必你已經在做了,但很多商家都忽略這件事...... 除了在社群貼文、廣告素材中,放入官網 / 網路預約頁面的連結之外,其實還有一個絕佳的曝光位置,很容易在宣傳的過程中被忽略,那就是 Facebook 粉絲專頁上的「行動呼籲按鈕」。
Thumbnail
現在歐美國家,有一半以上的人是因為網路認識、約見面、漸漸產生感情,最後決定結婚。網路上傳遞的形象、個性,會決定別人想不想跟你碰面。關於自己的網路資訊傳遞,可能會在許多方面影響你的一生。
Thumbnail
要用 Redbubble 賺到被動收入沒有那麼簡單或是要靠上傳設計到 Redbubble 來當作主業也是非常困難的,原因的話真的有很多種,包跨 Redbubble 的分潤,眾多的競爭對手等。 如果要在 Redbubble 上成功必須定時的上傳有好品質的設計使用 Redbubble 上傳設計賺錢
Thumbnail
◇◆ 今天的主題 ◆◇ ◆ Print On Demand 是甚麼? ◆ Print On Demand平台有哪些種類? ◆ POD 平台的優點 ◆ POD 平台的缺點 ◆ 進入 Print On Demand需要多少錢呢? ◆ Print On Demand 平台的選擇 一起增加被動收入吧!
Thumbnail
你是怎麼估算自己的FIRE目標的呢? 大叔總是強調你只需要【買進並持有指數化投資工具】就可以財務獨立,可是當你透過定期定額將資產順利往上增加時,你的FIRE目標也會跑前走,沒錯吧?原因就是通膨。 如果你有記帳的習慣,那就容易解決了。以大叔自己為例,先調出2017年-2020的記帳數據,將總支出扣除退
好不容易把客人招攬到店裡來了,那要如何讓他買單呢?其實網路購物跟實體商店的消費者心理是大同小異的;不外乎是兩個重要的因素: 良好的購物體驗 刺激消費衝動 試著想想,當我們走進高級精品店時,店員是不是在你一進門,就很親切地打聲招呼,然後請你坐在舒服的沙發上,詢問需不需要飲料或小點心,並遞上
Thumbnail
對於網路電商來說,購物車棄車率是個非常重要的指標,因為這代表著你流失的客戶率,也就是在行銷漏斗中已經走到最後一步的這些顧客們,決定要放棄的比率。哈利熊今天來分享電商幾個技巧防止顧客不買單!
Thumbnail
<p>除了薪資收入,試著建立網站、部落格,透過基本的SEO,開始獲取網站流量,並利用這些流量產生收入,或是打造個人品牌,創造更多商機。</p>