日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Sanitizer:給你的DOM消消毒

大家好,我卡頌。

網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了維西免費建站歡迎大家使用!

業(yè)務中經(jīng)常遇到需要處理「有風險的DOM」的場景,比如:

  • 各種工具的文本粘貼功能
  • 需要渲染服務端返回HTML的場景

為了阻止?jié)撛诘腦SS攻擊,有兩個選擇:

  • escape(轉義)
  • sanitize(消毒)

本文會介紹這兩者的區(qū)別以及為DOM消毒的API —— Sanitizer。

本文內容來自Safe DOM manipulation with the Sanitizer API[1]

轉義與消毒

假設,我們想將這樣一段HTML字符串插入DOM:

 
 
 
 
  1. const str = ""; 

如果直接將其作為某個元素的innerHTML,img的onerror回調執(zhí)行JS代碼的能力會帶來XSS風險。

一種常見解決方案是:轉義字符串。

什么是escape

瀏覽器會將一些保留字符解析為HTML代碼,比如:

  • <被解析為標簽的開頭
  • >被解析為標簽的結尾
  • ''被解析為屬性值的開頭和結尾

為了將這些保留字符顯示為文本(不被解析為HTML代碼),可以將其替換為對應的entity(HTML實體):

  • <的實體為<
  • >的實體為>
  • ''的實體為"

這種將HTML字符替換為entity的方式被稱為escape(轉義)

什么是sanitize

對于上面的HTML字符串:

 
 
 
 
  1. const str = ""; 

除了轉義''來規(guī)避XSS風險,還有一種更直觀的思路:直接過濾掉onerror屬性。

這種直接移除HTML字符串中有害的代碼(比如