2015-09-07 49 views
0

我有一個應用程序,可以根據客戶端的要求定製HTML模板。它在創建模板時會包含CSS樣式腳本,並在生成模板時最後注入模板。通過這種方式,客戶/支持人員可以動態生成各種HTML模板。如何在不引入XSS的情況下允許用戶控制的CSS?

但是,當我爲這個項目進行安全掃描時,所有CSS注入都被檢測爲安全漏洞(XSS注入)。我的應用程序本身是基於CSS注入設計的,因爲它需要在沒有開發人員參與的情況下創建動態HTML模板。

有沒有辦法在實現應用程序最終結果的同時防止XSS安全漏洞?

請讓我知道是否有其他方式做到這一點。

回答

0

允許不受信任的CSS輸入是一個XSS缺陷,因爲它可以用於修復UI。例如,惡意用戶可以通過以相同的風格和位置對其進行修飾,使其文本和內容顯示爲來自網站本身的權威文本。

有關更多信息,請參閱Google Browser Security Handbook

also ways to get script to run via CSS

JavaScript執行的風險。作爲一個鮮爲人知的功能,一些CSS實現允許將JavaScript代碼嵌入到樣式表中。 實現此目標至少有三種方法:使用 表達式(...)指令,該指令可評估 任意JavaScript語句並將其值用作CSS 參數;通過使用支持它的屬性 上的url('javascript:...')指令;或者通過調用瀏覽器特定的功能,例如Firefox的 -moz綁定機制。

    通過 -moz-binding
  • 腳本執行可以在Firefox 2和3。谷歌瀏覽安全手冊不會出現已經被更新了,因爲火狐3 This post表示這是現在固定,使得XML文件有可以從您自己的域中讀取。 XBL在當前版本的Firefox中似乎不可行。
  • 在Internet Explorer 10及更低版本中,HTML Components允許在CSS中執行腳本。

您可以通過implementing an HTML5 sandbox降低不受信任內容的風險。同時考慮implementing a Content Security Policy with sanitisation以防止用戶以任何方式從您的CSS上下文中逃脫(我還沒有看到您的代碼,但我想知道用戶是否輸入</style>作爲CSS的一部分,是否允許它們轉義樣式標記?)。

相關問題