成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

10個React安全實踐

開發 前端
我創建了這個 React 安全最佳實踐清單,以幫助你和你的團隊發現并解決 React 應用中的安全問題。這篇文章將展示如何自動測試你的 React 代碼中的安全問題,并修復它們。

[[381881]]

 你在找保護 React 應用程序的最佳方法嗎?那你找對地方了!

我創建了這個 React 安全最佳實踐清單,以幫助你和你的團隊發現并解決 React 應用中的安全問題。這篇文章將展示如何自動測試你的 React 代碼中的安全問題,并修復它們。

讓我們開始吧。

  1.  數據綁定( Data Binding)默認的xss保護
  2.  危險的URL
  3.  渲染html
  4.  直接訪問dom
  5.  服務端渲染
  6.  檢測依賴項中的漏洞
  7.  JSON State
  8.  檢測React易受攻擊版本
  9.  linter工具
  10.  危險的庫代碼

1、數據綁定( Data Binding)默認的 xss 保護

使用默認的{}進行數據綁定,React會自動對值進行轉義以防止XSS攻擊。但注意這種保護只在渲染textContent時候有用,渲染HTML attributes的時候是沒用的。

使用數據綁定語法{}將數據在組件中。

這樣做:

  1. <div>{data}</div> 

避免沒有經過自定義驗證的動態HTML attributes值。

別這樣做: 

  1. <form action={data}>... 

2、危險的URL

URL是可以通過javascript:協議來引入動態腳本的。所以需要驗證你的連接是否是http:或者https:以防止javascript:url的腳本注入。使用原生的URL parsing方法進行URL驗證,判斷其協議是否在你的白名單中。

這樣做: 

  1. function validateURL(url) {  
  2.   const parsed = new URL(url)  
  3.   return ['https:', 'http:'].includes(parsed.protocol)  
  4.  
  5. <a href={validateURL(url) ? url : ''}>Click here!</a> 

別這樣做: 

  1. <a href={attackerControlled}>Click here!</a> 

3、渲染html

React是可以通過dangerouslySetInnerHTML將html代碼直接渲染到dom節點中的。但以這種方式插入的任何內容都必須事先消毒。

在將任何值放入dangerouslySetInnerHTML屬性之前,需要用dompurify對其消毒。

在插入html時用dompurify進行處理 

  1. import purify from "dompurify";  
  2. <div dangerouslySetInnerHTML={{ __html:purify.sanitize(data) }} /> 

4、直接訪問dom

應該避免訪問DOM然后直接將內容注入DOM節點。如果你一定要插入HTML,那就先用dompurify消毒,然后再用dangerouslySetInnerHTML屬性。

這樣做: 

  1. import purify from "dompurify";  
  2. <div dangerouslySetInnerHTML={{__html:purify.sanitize(data) }} /> 

不要使用refs 和findDomNode()去訪問渲染出來的DOM元素,然后用類似innerHTML的方法或者屬性去注入內容。

別這樣做: 

  1. this.myRef.current.innerHTML = attackerControlledValue

5、服務端渲染

在使用像ReactDOMServer.renderToString()和ReactDOMServer.renderToStaticMarkup()這類方法的時候,數據綁定會自動提供內容轉義的功能。

避免在將字符串發送到客戶端瀏覽器進行注水(hydration)之前,把其他的一些(未經檢驗的)字符串連接到renderToStaticMarkup()的輸出上。

不要把未經消毒的數據連接到renderToStaticMarkup()的輸出上,以防止XSS 

  1. app.get("/", function (req, res) {  
  2.   return res.send(  
  3.     ReactDOMServer.renderToStaticMarkup(  
  4.       React.createElement("h1", null, "Hello World!")  
  5.     ) + otherData  
  6.   );  
  7. }); 

6、檢測依賴項中的漏洞

一些第三方組件的某些版本可能包含安全問題。檢查您的依賴關系,并及時更新到更好的版本。

使用類似snyk CLI[1]的工具進行漏洞檢查。

snyk CLI 還可以與代碼管理系統集成,然后自動修復漏洞:

$ npx snyk test

7、JSON state

將JSON數據與SSR后的React頁面一起發送是常見做法。一定要用無害的等價字符轉移<字符。

使用良性等效字符轉義JSON中的HTML有效值: 

  1. window.__PRELOADED_STATE__ =   ${JSON.stringify(preloadedState).replace( /</g, '\\u003c')} 

8、易受攻擊的React版本

React庫在過去有一些嚴重性很高的漏洞,因此最好保持最新版本。

使用npm outdated查看是否處于最新版本,從而避免使用react和react dom的易受攻擊版本。

9、linter工具

安裝能自動檢測代碼中的安全問題并提供修正建議的Linter配置和插件。

使用 ESLint React security config[2] 來檢查安全漏洞。

配置能在使用husky這樣的庫檢測到安全相關的問題時,會失敗的pre-commit鉤子。

使用Snyk自動更新版本[3] 當其檢查到你當前的版本有安全問題。

10、危險的庫代碼

庫代碼通常會進行危險的操作,如直接將HTML插入DOM。人工或使用linter工具來檢查庫代碼,以檢測是否有對React機制的不安全使用。

避免那些使用dangerouslySetInnerHTML、innerHTML、未驗證的URL或其他不安全模式的庫。使用linter工具對node_modules目錄進行檢查。

后話

以上就是我要分享的10個React安全實踐。你在 React 安全方面有哪些經驗,歡迎在評論中分享出來。 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2023-03-30 08:00:00

ReactJavaScript前端

2020-02-13 12:17:13

VSCodeReact代碼

2022-08-02 09:55:04

React前端

2018-02-28 17:27:28

2023-07-21 01:12:30

Reactfalse?變量

2019-07-22 10:42:11

React組件前端

2020-10-27 06:56:53

IoT產品實踐

2019-11-05 17:10:19

Java開發編程語言

2017-03-30 22:16:21

DevOpsIT應用程序

2013-12-19 14:40:13

2022-10-10 14:53:00

云安全云計算云平臺

2017-05-17 15:50:34

開發前端react

2018-10-05 23:26:00

機器學習算法數據

2019-11-20 10:32:39

云計算安全技術

2021-05-08 16:11:08

Java開發代碼

2018-03-16 10:41:26

公有云多云CIO

2018-03-12 20:18:16

Linux容器安全

2020-05-31 18:50:44

云計算開源安全工具

2014-06-24 10:41:46

2022-06-23 09:04:14

ReactHooks項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲一区 | 亚洲精品日日夜夜 | 一级欧美| 999精品视频| 午夜精品一区二区三区免费视频 | 日韩一区二区免费视频 | 日本精品一区二区在线观看 | 日韩一区二区三区在线观看 | 黄网免费 | h片在线播放 | 高清一区二区三区 | 久久久久国产一区二区三区不卡 | 欧美aⅴ在线观看 | 国产精品久久二区 | 欧美亚洲高清 | 99re在线| 国产精品久久视频 | 国产精品一区二区日韩 | 草逼网站 | 国产一级免费视频 | 亚洲成av人片在线观看无码 | 精品综合 | 日本中文在线视频 | 日韩av一区二区在线观看 | 日韩三级在线观看 | 国产精品亚洲精品久久 | 国产美女黄色片 | 天堂一区二区三区四区 | 久久夜夜 | 日韩成人免费视频 | 日日干夜夜操 | 中文字幕亚洲精品 | 欧美极品一区二区 | 精品视频在线一区 | 国产毛片久久久 | 羞羞视频网站免费观看 | 久久精品国产一区二区电影 | 中文字幕一页二页 | 国产乱性 | 久久久国产精品视频 | 午夜精品久久久 |