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

更新於 2024/10/06閱讀時間約 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
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在數位時代,電商網站的成功與否往往取決於網站的SEO優化是否到位。SEO(搜尋引擎最佳化)不僅能提高網站的可見性,還能大幅增加銷售量,讓你的產品更容易被消費者找到。本文將探討一些增加銷售量的最佳SEO做法,並說明如何有效運用這些技巧來提升電商網站的競爭力。 1. 網站結構與技術SEO的重要性
Thumbnail
錨點文字是網站內容中的重要元素,它不僅可以引導讀者瀏覽網頁,還可以增加網站的SEO價值和流量。本文介紹了錨點文字的功用,並提出了幾項應用技巧,包括善用多樣化的錨點文字、使用相關的錨點文字和保持簡潔扼要。希望本文能幫助讀者更深入瞭解錨點文字的重要性,並能夠運用到自己的網站中。
Thumbnail
反向連結,在網站的SEO優化中可謂是相當關鍵的一環。各大搜尋引擎,像是Google、Yahoo和Bing,都會根據你網站反向連結的數量和質量來判斷它的重要性。如果其他網站認為你的內容有價值且與他們相關,那麼他們可能會在他們的文章中加上連結指向你的網站。這不僅可以提升你網站的權威性和信任度,還有助於提
Thumbnail
這篇文章總結了在抖音上的7種變現模式,包括創作者變現、直播模式、課程變現、影片製作變現等。作者提供了相關的資訊和連結,並提到2024年的風口。文章標籤包括抖音變現、抖音賺錢、TIKTOK賺錢等。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
社群行銷想必你已經在做了,但很多商家都忽略這件事...... 除了在社群貼文、廣告素材中,放入官網 / 網路預約頁面的連結之外,其實還有一個絕佳的曝光位置,很容易在宣傳的過程中被忽略,那就是 Facebook 粉絲專頁上的「行動呼籲按鈕」。
Thumbnail
現在歐美國家,有一半以上的人是因為網路認識、約見面、漸漸產生感情,最後決定結婚。網路上傳遞的形象、個性,會決定別人想不想跟你碰面。關於自己的網路資訊傳遞,可能會在許多方面影響你的一生。
Thumbnail
要用 Redbubble 賺到被動收入沒有那麼簡單或是要靠上傳設計到 Redbubble 來當作主業也是非常困難的,原因的話真的有很多種,包跨 Redbubble 的分潤,眾多的競爭對手等。 如果要在 Redbubble 上成功必須定時的上傳有好品質的設計使用 Redbubble 上傳設計賺錢
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
在數位時代,電商網站的成功與否往往取決於網站的SEO優化是否到位。SEO(搜尋引擎最佳化)不僅能提高網站的可見性,還能大幅增加銷售量,讓你的產品更容易被消費者找到。本文將探討一些增加銷售量的最佳SEO做法,並說明如何有效運用這些技巧來提升電商網站的競爭力。 1. 網站結構與技術SEO的重要性
Thumbnail
錨點文字是網站內容中的重要元素,它不僅可以引導讀者瀏覽網頁,還可以增加網站的SEO價值和流量。本文介紹了錨點文字的功用,並提出了幾項應用技巧,包括善用多樣化的錨點文字、使用相關的錨點文字和保持簡潔扼要。希望本文能幫助讀者更深入瞭解錨點文字的重要性,並能夠運用到自己的網站中。
Thumbnail
反向連結,在網站的SEO優化中可謂是相當關鍵的一環。各大搜尋引擎,像是Google、Yahoo和Bing,都會根據你網站反向連結的數量和質量來判斷它的重要性。如果其他網站認為你的內容有價值且與他們相關,那麼他們可能會在他們的文章中加上連結指向你的網站。這不僅可以提升你網站的權威性和信任度,還有助於提
Thumbnail
這篇文章總結了在抖音上的7種變現模式,包括創作者變現、直播模式、課程變現、影片製作變現等。作者提供了相關的資訊和連結,並提到2024年的風口。文章標籤包括抖音變現、抖音賺錢、TIKTOK賺錢等。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
社群行銷想必你已經在做了,但很多商家都忽略這件事...... 除了在社群貼文、廣告素材中,放入官網 / 網路預約頁面的連結之外,其實還有一個絕佳的曝光位置,很容易在宣傳的過程中被忽略,那就是 Facebook 粉絲專頁上的「行動呼籲按鈕」。
Thumbnail
現在歐美國家,有一半以上的人是因為網路認識、約見面、漸漸產生感情,最後決定結婚。網路上傳遞的形象、個性,會決定別人想不想跟你碰面。關於自己的網路資訊傳遞,可能會在許多方面影響你的一生。
Thumbnail
要用 Redbubble 賺到被動收入沒有那麼簡單或是要靠上傳設計到 Redbubble 來當作主業也是非常困難的,原因的話真的有很多種,包跨 Redbubble 的分潤,眾多的競爭對手等。 如果要在 Redbubble 上成功必須定時的上傳有好品質的設計使用 Redbubble 上傳設計賺錢