簡體   English   中英

嵌入式JavaScript和HTML中的安全性

[英]Security in embedded javascript and HTML

我正在嘗試針對以下情況找到解決方案:

  • 我有一個由HTML,javascript,AJAX和廣告等組成的網絡應用程序
  • 我希望用戶為我的應用程序/網站創建插件做出貢獻,該插件嵌入其中。
  • 該插件將使用類似的技術(ajax,HTML等)創建,因此我需要允許插件運行自己的JavaScript代碼。
  • 每個插件將在一個包含一些用戶信息和插件的頁面中工作(例如舊的fbml facebook應用程序)

問題是,通過這種方式,插件還可以調用以獲取用戶信息 (由於嵌入了插件的代碼,因此其域將與主網站相同,並且該代碼將完全在我的網站上)。

所以問題是:如何避免這種情況,並且對插件可以從用戶那里獲得什么信息進行精確控制?

該插件將不會被檢查,並且可以隨時更改,因此讀取所有插件代碼不是解決方案。

我樂意接受任何建議,可能簡單有效,並且可能不會將整個插件放在iframe中。

-編輯:當有創建應用程序的舊方法時,facebook是怎么做的? (現在只有iframe,但是有FBML應用方式,他們如何獲得這種安全性?)

您是否聽說過允許任意代碼執行的漏洞利用方法。 哪一種是最危險的攻擊?

好吧,在這種情況下,您明確並願意允許執行任意代碼,並且幾乎沒有辦法對它進行沙箱處理。

1)您可以在iframe中的另一個子域中運行“插件”,然后將其插入其中。 這樣,插件無法訪問您的Cookie和腳本。

請注意,如果您希望插件與該域中的服務進行通信,則將是跨域通信。 因此,您要么需要訴諸JSONP,要么使用新的跨域訪問控制規范。 (即,在您的Web服務響應中返回適當的標頭-Access-Control-Allow-Origin“ plugins.domain.com”)

2)創建自己的簡單腳本語言,並根據需要公開盡可能多的內容。 即使您設法做到這一點,這顯然也是乏味的,插件開發人員將忍受學習過程。

Facebook擁有自己的“ JavaScript” 硬幣 ,即FBJS ,它通過控制可以運行的內容來進行沙箱測試。

沒有多汁的后端,這實際上限制了腳本的影響。

但是,您仍然必須擔心基於DOM的xssClickjacking

已經6年了,但是我覺得為這個問題提供現代化的解決方案很重要。 sandbox屬性new(er)可用於限制IFrame的功能。

該系統的簡單實現將僅allow-scripts對IFrame的allow-scripts權限,也許帶有一個簡單的JS文件,該文件將隨包含一些自定義庫函數的每個插件一起提供。

為了與您的HTML頁面進行通信,您可以使用postMessage 在插件方面,可以使用如上所述的庫來傳輸命令。 在用戶方面,另一個系統必須驗證並解碼這些請求,然后執行它們。

由於沙盒IFrame不具有跨源功能,因此無法直接修改頁面。 但是,這也意味着無法驗證postMessage的來源,因此出於安全原因,必須創建某種代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM