我的目標是讓合作伙伴通過將自己的樣式錶鏈接通過URL參數傳遞給他們自己的外觀樣式。通過JavaScript加載第三方CSS是否存在安全性或瀏覽器兼容性問題?加載外部第三方CSS有沒有危險?
10
A
回答
13
在CSS文件中。
expressions(code)
,behavior:url()
,url(javascript:code)
和-moz-binding:url()
都有潛在的安全問題。
行爲不能跨域,以消除一些威脅,但一般來說,你確實需要以某種方式消毒它。
如果您允許用戶鏈接到外部服務器上的CSS,則沒有完整的驗證方式。服務器可以檢查服務器上的CSS文件以確保沒有惡意,但如果用戶更改了樣式表,該怎麼辦?你將不得不連續檢查樣式表。此外,服務器可能會嘗試繞過驗證方法向服務器IP地址提供不同的信息。
誠實地說,我會建議將CSS存儲在您自己的服務器上。簡單的運行它會拋出一個正則表達式解析器,從上面刪除可能的惡意代碼。
3
2
,那麼就沒有任何真正的危險。他們可能會毀掉自己在網站上的體驗,但不會破壞其他人的體驗。
但是,如果他們的自定義CSS顯示給其他用戶,那麼他們可能會使用它來完全按照您的意圖搞亂網站的樣式。例如,他們可以簡單地從源頭抓取一些重要元素的id
,並覆蓋它們以隱藏它們。
當然,只要您小心並妥善處理所有用戶輸入,就不應該面臨任何重大問題。
0
CSS表達式僅適用於IE 6-7,但允許使用內聯JS(通常用於計算要設置的值)。
例如:
/* set bgcolor based on time */
div.title {
background-color: expression((new Date()).getHours() % 2 ? "#B8D4FF" : "#F08A00");
}
然而,這可能被用來做惡意的事情,我會說這是至少是值得一些測試。
+0
它可以在IE8中使用,具體取決於文檔類型 – William
相關問題
- 1. trustMe有多危險?
- 2. 發佈前沒有保留危險嗎?
- 3. '@ class_object_instance.save!(:validate => false)'方法有多危險?
- 4. JavaScript有第三方對象加載
- 5. 只有一個外部CSS沒有加載到網站
- 6. LNK4098 - 它有多危險?
- 7. 添加外鍵關係是否危險?
- 8. 第三方API風險
- 9. Mvc3潛在危險request.form ...解決方案沒有禁用驗證
- 10. 無法加載ios第三方鍵盤沒有完全訪問
- 11. 在ExtJS 4下有沒有加載外部組件的方法?
- 12. 在Angularjs中加載外部模塊(第三方庫)
- 13. 我在外部HTML JavaScript沒有加載
- 14. jsdom沒有加載外部資源
- 15. 秒外部JavaScript文件沒有加載
- 16. Laravel頁面沒有加載外部文件(CSS和JS)
- 17. 在論壇上發佈.htaccess文件有沒有任何危險?
- 18. 在R中使用`-1L`而不是`-1`有沒有危險?
- 19. 提交SQL連接對象有沒有危險?
- 20. 在PHP中需要'/../private'有沒有危險?
- 21. MVC JQuery加載部分圖像潛在危險請求
- 22. NPAPI加載第三方DLL
- 23. 託管第三方Javascript有哪些風險?
- 24. 自動加載與工廠和自動加載危險
- 25. 部署只有第三方jar到artifactory
- 26. 有潛在危險的Request.Form值
- 27. 有潛在危險的Request.Form值4
- 28. f77有777權限是否危險?
- 29. HTMLElement offsetTop屬性有多危險?
- 30. 危險lySetInnerHTML具有多個html條目
+1對於具體的例子! –
+1,但請記住現在表達式幾乎不受支持,行爲也是如此,即使您*可以*將JS加載到背景圖像中,或者它不會執行。 –
爲了向後兼容,在IE8中執行表達式。考慮到IE的使用量最大,我肯定會認爲它們是安全威脅。 – William