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

別天真了,第三方CSS并不安全

開(kāi)發(fā) 前端
最近一段時(shí)間,關(guān)于 通過(guò) CSS 創(chuàng)建 “keylogger”(鍵盤(pán)記錄器) 的討論很多。有些人呼吁瀏覽器廠(chǎng)商去“修復(fù)”它。有些人則深入研究,表示它僅能影響通過(guò)類(lèi) React 框架建立的網(wǎng)站,并指責(zé) React。而真正的問(wèn)題卻在于很多人認(rèn)為第三方內(nèi)容是“安全”的。

[[222177]]

最近一段時(shí)間,關(guān)于 通過(guò) CSS 創(chuàng)建 “keylogger”(鍵盤(pán)記錄器) 的討論很多。

有些人呼吁瀏覽器廠(chǎng)商去“修復(fù)”它。有些人則深入研究,表示它僅能影響通過(guò)類(lèi) React 框架建立的網(wǎng)站,并指責(zé) React。而真正的問(wèn)題卻在于很多人認(rèn)為第三方內(nèi)容是“安全”的。

第三方圖片

 

  1. <img src="https://example.com/kitten.jpg"

如果我將上述代碼引入我的文件中,即表示信任 example.com。對(duì)方可能會(huì)刪除資源,給我一個(gè) 404,導(dǎo)致網(wǎng)站不完整,從而破壞這種信任關(guān)系。或者,他們可能會(huì)用其他非預(yù)期的數(shù)據(jù)來(lái)替代小貓圖片的數(shù)據(jù)。

但是,圖片的影響僅限于元素本身的內(nèi)容區(qū)域。我可以向用戶(hù)解釋并希望用戶(hù)相信,“此處的內(nèi)容來(lái)自 example.com,如果它有誤,則是原站點(diǎn)的問(wèn)題,并不是本站造成的”。但這個(gè)問(wèn)題肯定不會(huì)影響到密碼輸入框等內(nèi)容。

第三方腳本

 

  1. <script src="https://example.com/script.js"></script> 

與圖片相比,第三方腳本則有更多的控制權(quán)。如果我將上述代碼引入我的文件中,則表示我賦予了 example.com 完全控制我的網(wǎng)站的權(quán)限。該腳本能:

  • 讀取/修改頁(yè)面內(nèi)容。
  • 監(jiān)聽(tīng)用戶(hù)的所有交互。
  • 運(yùn)行耗費(fèi)大量計(jì)算資源的代碼(如 cryptocoin 挖礦程序)。
  • 通過(guò)向本站發(fā)請(qǐng)求,這樣能附帶用戶(hù)的 cookie,轉(zhuǎn)發(fā)響應(yīng)。(譯注:盜取用戶(hù)的 cookie 及其他數(shù)據(jù))
  • 讀取/修改本地存儲(chǔ)。
  • ......可以做任何對(duì)方想做的事情。

“本地存儲(chǔ)”非常重要。如果腳本通過(guò) IndexedDB 或緩存 API 發(fā)起攻擊,則即使在刪除腳本后,攻擊仍可能在整個(gè)站點(diǎn)內(nèi)繼續(xù)存在。

如果你引入了其他站點(diǎn)的腳本,則必須絕對(duì)相信對(duì)方及對(duì)方的防護(hù)能力。

如果你遭到惡意腳本的攻擊,則可設(shè)置 Clear-Site-Data header(清空站點(diǎn)數(shù)據(jù)響應(yīng)頭) 清除站點(diǎn)所有數(shù)據(jù)。

第三方CSS

 

  1. <link rel="stylesheet" href="https://example.com/style.css"

相比圖片,CSS 在能力上更接近腳本。像腳本一樣,它適用于整個(gè)頁(yè)面。它可以:

  • 刪除/添加/修改頁(yè)面內(nèi)容。
  • 根據(jù)頁(yè)面內(nèi)容發(fā)起請(qǐng)求。
  • 可響應(yīng)多種用戶(hù)交互。

雖然 CSS 不能修改本地存儲(chǔ),也不能通過(guò) CSS 運(yùn)行 cryptocoin 挖礦程序(也許是可能的,只是我不知道而已),但惡意 CSS 代碼仍然能造成很大的損失。

鍵盤(pán)記錄器

從引起廣泛關(guān)注的代碼開(kāi)始講起:

 

  1. input[type="password"][value$="p"] {  
  2.   background: url('/password?p');  

 

如果輸入框的 value 屬性值以 p 結(jié)尾,上述代碼將會(huì)向 /password?p 發(fā)起請(qǐng)求。每個(gè)字符都可觸發(fā)這個(gè)操作,通過(guò)它能獲取到很多數(shù)據(jù)。

默認(rèn)情況下,瀏覽器不會(huì)將用戶(hù)輸入的值存儲(chǔ)在 value 屬性中,因此這種攻擊需要依賴(lài)某些能同步這些值的東西,如 React。

要應(yīng)對(duì)這個(gè)問(wèn)題,React 可用另一種同步密碼字段的方式,或?yàn)g覽器可限制那些能匹配密碼字段屬性的選擇器。但是,這僅僅是一種虛假的安全。你只解決了在特殊情況下的該問(wèn)題,而其他情況依舊。

如果 React 改為使用 data-value 屬性,則該應(yīng)對(duì)方法無(wú)效。如果網(wǎng)站將輸入框更改為 type="text",以便用戶(hù)可以看到他們正在輸入的內(nèi)容,則該應(yīng)對(duì)方法無(wú)效。如果網(wǎng)站創(chuàng)建了一個(gè) <better-password-input> 組件并暴露 value 作為屬性,則該應(yīng)對(duì)方法無(wú)效。

此外,還有很多其他的基于 CSS 的攻擊方式:

消失的內(nèi)容

 

  1. body { 
  2.   display: none; 
  3.  
  4. html::after { 
  5.   content: 'HTTP 500 Server Error'

 

以上是一個(gè)極端的例子,但想象一下,如果第三方僅對(duì)某一小部分用戶(hù)這樣做。不但你很難調(diào)試,還會(huì)失去用戶(hù)的信任。

更狡猾的方式如偶爾刪除“購(gòu)買(mǎi)”按鈕,或重排內(nèi)容段落。

添加內(nèi)容

 

  1. .price-value::before {  
  2.   content: '1' 

哦,價(jià)格被標(biāo)高了。

移動(dòng)內(nèi)容

 

  1. .delete-everything-button {  
  2.   opacity: 0;  
  3.   position: absolute 
  4.   top: 500px;  
  5.   left: 300px;  

 

上面的按鈕能做一些重要的操作,設(shè)置其為不可見(jiàn),然后放在用戶(hù)可能點(diǎn)擊的地方。

值得慶幸的是,如果按鈕的操作確實(shí)非常重要,網(wǎng)站可能會(huì)先顯示確認(rèn)對(duì)話(huà)框。但也不是不可繞過(guò),只需使用更多的 CSS 來(lái)欺騙用戶(hù)點(diǎn)擊 “確定” 按鈕而不是“取消”按鈕即可。

假設(shè)瀏覽器確實(shí)采用上面的應(yīng)對(duì)方法解決“鍵盤(pán)記錄器”的問(wèn)題。攻擊者只需在頁(yè)面上找到一個(gè)非密碼文本輸入框(可能是搜索輸入框)并將其蓋在密碼輸入框上即可。然后他們的攻擊就又可用了。

讀取屬性

其實(shí),你需要擔(dān)心的不僅僅是密碼輸入框。你可能在屬性中保存著其他的隱藏內(nèi)容:

 

  1. <input type="hidden" name="csrf" value="1687594325" 
  2. <img src="/avatars/samanthasmith83.jpg" 
  3. <iframe src="//cool-maps-service/show?st-pancras-london"></iframe>  
  4. <img src="/gender-icons/female.png" 
  5. <div></div> 

所有這些都可以通過(guò) CSS 選擇器獲取,且能發(fā)出請(qǐng)求。

監(jiān)聽(tīng)交互

 

  1. .login-button:hover {  
  2.   background: url('/login-button-hover');  
  3.  
  4.  
  5.  
  6. .login-button:active {  
  7.   background: url('/login-button-active');  

 

可將 hover 和 active 狀態(tài)發(fā)送到服務(wù)器。通過(guò)適當(dāng)?shù)?CSS,你就能獲取到用戶(hù)意圖。

讀取文本

 

  1. @font-face {  
  2.   font-family: blah;  
  3.   src: url('/page-contains-q') format('woff');  
  4.   unicode-range: U+85;  
  5.  
  6.  
  7.  
  8. html {  
  9.   font-family: blah, sans-serif;  

 

在這種情況下,如果頁(yè)面內(nèi)有 q 字符,則會(huì)發(fā)送請(qǐng)求。你可以為不同的字符,并針對(duì)特定的元素,創(chuàng)建大量不同的字體。字體也可以包含 ligature(連字),所以你可以在開(kāi)始檢測(cè)字符序列。你甚至可以通過(guò)將字體技巧與滾動(dòng)條檢測(cè)結(jié)合起來(lái) 來(lái)推斷內(nèi)容。

譯注:關(guān)于 ligature(連字), 可查看 Wikipedia Typographic Ligature

第三方內(nèi)容不安全

這些只是我所知道的一些技巧,我相信還有更多。

第三方內(nèi)容在其沙箱區(qū)域內(nèi)具有強(qiáng)大的能力。一張圖片或沙盒化的 iframe 僅在一個(gè)小范圍內(nèi)的沙箱中,但腳本和樣式的范圍卻是你的頁(yè)面,甚至是整個(gè)站點(diǎn)。

如果你擔(dān)心惡意用戶(hù)誘使你的網(wǎng)站加載第三方資源,可以通過(guò) CSP 用作防護(hù)手段,其可以限制加載圖片,腳本和樣式的來(lái)源。

你還可以使用 Subresource Integrity(子資源完整性 ) 來(lái)確保腳本/樣式的內(nèi)容匹配特定的 hash,否則將不加載。感謝 Hacker News上的Piskvorrr 提醒我!

 

如果你想了解更多如上述的 hack 技巧,包括滾動(dòng)條技巧,更多信息請(qǐng)參閱 Mathias Bynens' talk from 2014,Mike West's talk from 2013,或 Mario Heiderich et al.'s paper from 2012(PDF)。是的,這不是什么新東西。 

責(zé)任編輯:龐桂玉 來(lái)源: 前端大全
相關(guān)推薦

2015-11-05 16:44:37

第三方登陸android源碼

2017-12-11 15:53:56

2023-07-07 13:32:03

第三方安全風(fēng)險(xiǎn)網(wǎng)絡(luò)安全

2014-07-25 09:33:22

2022-09-05 09:01:47

第三方庫(kù)API

2014-07-23 08:55:42

iOSFMDB

2019-07-30 11:35:54

AndroidRetrofit庫(kù)

2013-06-25 09:10:36

云數(shù)據(jù)安全云學(xué)習(xí)曲線(xiàn)云安全

2019-09-03 18:31:19

第三方支付電商支付行業(yè)

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

2021-12-14 15:45:27

KubernetesSecretLinux

2010-08-02 23:20:24

2023-06-20 11:34:48

2014-04-09 09:37:29

2013-08-12 16:04:19

第三方移動(dòng)應(yīng)用

2021-09-26 10:43:08

注冊(cè)Istio集成

2017-05-16 13:24:02

LinuxCentOS第三方倉(cāng)庫(kù)

2014-07-22 10:56:45

Android Stu第三方類(lèi)庫(kù)

2009-01-14 12:45:05

MSNIM蘋(píng)果
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 最新中文字幕在线播放 | aaaa网站| 成人综合在线视频 | 免费观看毛片 | 亚洲一区二区三区在线 | 99成人在线视频 | 日韩在线一区二区三区 | 91久久精品视频 | 日本电影网站 | 亚洲一区二区三区在线免费 | 欧美日韩1区2区3区 欧美久久一区 | 亚洲欧美在线一区 | 99爱免费| 黄色成人在线网站 | 久久久视频在线 | av高清| 91久久夜色 | 亚洲黄色高清视频 | 国产成人精品久久二区二区91 | 欧美性一区二区三区 | 狠狠色香婷婷久久亚洲精品 | 久久精品免费 | 国产视频福利一区 | 91精品国产欧美一区二区成人 | 欧美日一区二区 | 亚洲精品黑人 | 四虎影院久久 | 国产99久久精品一区二区永久免费 | 亚洲三级在线观看 | 欧美精品一区二区三区在线播放 | 精品美女视频在线观看免费软件 | 久久综合狠狠综合久久综合88 | 国产线视频精品免费观看视频 | 污污的网站在线观看 | 欧美亚洲激情 | 日韩中文字幕久久 | 欧洲av一区 | 精品久久久久久亚洲精品 | 欧美成人精品一区二区三区 | 能看的av| 国产午夜精品久久久久免费视高清 |