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
留言分享你的想法!
avatar-img
Let's Write 的沙龍
9會員
19內容數
沙龍到底是…做什麼用的勒?
Let's Write 的沙龍的其他內容
2024/08/24
了解如何在 GitLab 中設置和使用 CodiumAI PR-Agent 進行 AI Code Review,自動檢查和改進程式碼。本文提供詳細步驟,包括環境設置、提交必要檔案,以及如何使用 OpenAI API Key 進行配置。
Thumbnail
2024/08/24
了解如何在 GitLab 中設置和使用 CodiumAI PR-Agent 進行 AI Code Review,自動檢查和改進程式碼。本文提供詳細步驟,包括環境設置、提交必要檔案,以及如何使用 OpenAI API Key 進行配置。
Thumbnail
2024/08/07
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
2024/08/07
了解如何使用 Cloudflare Workers AI 與 Whisper 建立免費開源的語音辨識功能。本文詳細說明註冊步驟、部署流程及程式碼修改,讓你輕鬆將語音轉換成文字。
Thumbnail
2024/06/05
學習如何使用 Tensorflow.js 的 COCO-SSD 模型在網頁上進行圖片物件辨識,包括基本使用方法、進階應用及實作範例,輕鬆辨識圖片中的人數和物件。
Thumbnail
2024/06/05
學習如何使用 Tensorflow.js 的 COCO-SSD 模型在網頁上進行圖片物件辨識,包括基本使用方法、進階應用及實作範例,輕鬆辨識圖片中的人數和物件。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
跨站腳本攻擊(XSS)是Web應用中最常見的安全威脅之一。它允許攻擊者在受害者的瀏覽器中執行惡意腳本,進而竊取數據、欺騙用戶或進行其他惡意操作。在這篇文章中,我們將探討如何在Gin中預防XSS攻擊,保護你的應用和用戶。
Thumbnail
跨站腳本攻擊(XSS)是Web應用中最常見的安全威脅之一。它允許攻擊者在受害者的瀏覽器中執行惡意腳本,進而竊取數據、欺騙用戶或進行其他惡意操作。在這篇文章中,我們將探討如何在Gin中預防XSS攻擊,保護你的應用和用戶。
Thumbnail
重要消息:防詐達人安全瀏覽器於7月起不再提供服務,建議先移除此擴充元件。詳細公告請參考本文,文末也會提供移除擴充元件的方式教學,並提供其他安全檢測的替代方案 重要公告 —— 防詐達人安全瀏覽器終止服務
Thumbnail
重要消息:防詐達人安全瀏覽器於7月起不再提供服務,建議先移除此擴充元件。詳細公告請參考本文,文末也會提供移除擴充元件的方式教學,並提供其他安全檢測的替代方案 重要公告 —— 防詐達人安全瀏覽器終止服務
Thumbnail
文章最後將會提供一套CSP安全檢查工具,保護自身,避免踏入不安全地帶! 🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔 為什麼制定安全政策這麼重要呢? 可以制定哪些規則呢? 這邊僅著重於概念的描述,因此列出幾個常見的來源白名單配置選項,至於完整選項請參考這裡。
Thumbnail
文章最後將會提供一套CSP安全檢查工具,保護自身,避免踏入不安全地帶! 🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔 為什麼制定安全政策這麼重要呢? 可以制定哪些規則呢? 這邊僅著重於概念的描述,因此列出幾個常見的來源白名單配置選項,至於完整選項請參考這裡。
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 CRSF攻擊示意圖 如何防範CSRF?
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 CRSF攻擊示意圖 如何防範CSRF?
Thumbnail
CSRF全名為 Cross Site Request Forgery( 跨站請求偽造)。
Thumbnail
CSRF全名為 Cross Site Request Forgery( 跨站請求偽造)。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News