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

avatar-img
9會員
19內容數
沙龍到底是…做什麼用的勒?
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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。
你可能也想看
Google News 追蹤
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
在現今數位化的時代,網路攻擊頻率持續上升,其中又以DDoS攻擊最為常見且具破壞性。面對這種威脅,企業如何保護自身的網路資源成為了一大挑戰。CDN(內容傳遞網絡)作為一種有效的防禦工具,不僅能提升網站的性能與用戶體驗,還能大幅降低DDoS攻擊的風險。
Thumbnail
這邊統整了過往喜特先生發布過的「資料驗證」系列文! 資料驗證是個「驗證資料是否符合某條件的機制」,我們通常會用它來避免別人輸入無效的值,減少錯誤的發生。你可以按照順序慢慢學習,把資料驗證這功能一次搞懂!
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
平日裡喜歡輕鬆愉快地生活,但有些事情還是得認真對待( • ̀ω•́ ) 今天跟大家分享資訊安全問題,你有沒有被網站詐騙的經驗呢? 在這個數位時代,我們大多數人都會在網上進行各種活動,從購物到瀏覽新聞,甚至處理金融交易。但是,隨之而來的風險也不容忽視。有時候,我們可能會遇到一些看似正常的企業網站,
Thumbnail
在瀏覽Youtube時,是否常被留言區的惡意評論影響心情?為了避免這些負面內容,Tune提供了一個解決方案。這是一個開源的Chrome擴充功能,可以幫助使用者過濾負面或有害內容,讓網路環境更加清潔。此文章詳細介紹Tune的使用方法、功能,並提供了Perspective API串接實作測試範例。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
在創作的路上真的很多人問我說 到底要怎麼做出符合自己期待 但又可以表現得很有美感的作品?🥹 這個問題真的應該是每個創作者都一直在學習的課題吧!
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
在現今數位化的時代,網路攻擊頻率持續上升,其中又以DDoS攻擊最為常見且具破壞性。面對這種威脅,企業如何保護自身的網路資源成為了一大挑戰。CDN(內容傳遞網絡)作為一種有效的防禦工具,不僅能提升網站的性能與用戶體驗,還能大幅降低DDoS攻擊的風險。
Thumbnail
這邊統整了過往喜特先生發布過的「資料驗證」系列文! 資料驗證是個「驗證資料是否符合某條件的機制」,我們通常會用它來避免別人輸入無效的值,減少錯誤的發生。你可以按照順序慢慢學習,把資料驗證這功能一次搞懂!
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
平日裡喜歡輕鬆愉快地生活,但有些事情還是得認真對待( • ̀ω•́ ) 今天跟大家分享資訊安全問題,你有沒有被網站詐騙的經驗呢? 在這個數位時代,我們大多數人都會在網上進行各種活動,從購物到瀏覽新聞,甚至處理金融交易。但是,隨之而來的風險也不容忽視。有時候,我們可能會遇到一些看似正常的企業網站,
Thumbnail
在瀏覽Youtube時,是否常被留言區的惡意評論影響心情?為了避免這些負面內容,Tune提供了一個解決方案。這是一個開源的Chrome擴充功能,可以幫助使用者過濾負面或有害內容,讓網路環境更加清潔。此文章詳細介紹Tune的使用方法、功能,並提供了Perspective API串接實作測試範例。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。