2011-01-24 32 views
0

我正在構建一個Web應用程序,以允許他人設計自己的頁面。我正在使用PHP,MySQL。PHP:安全地允許用戶編寫自定義CSS來自定義我的網站上的網頁?

我想知道。允許用戶通過編寫自己的CSS代碼來定製他們的頁面是否安全?

所以我就在想一個TEXTAREA場,他們可以再在他們的CSS代碼進入。

我使用PHP的filter_var($字符串,FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_HIGH);在將字符串保存到我的數據庫之前對其進行過濾。

那麼......允許還是不允許?

謝謝!

+5

CSS本身不提供不安全的操作。但是,Internet Explorer存在。 – mario 2011-01-24 23:07:50

+1

「但是,Internet Explorer存在」。我其實大笑起來。 – Pickle 2011-01-24 23:31:35

回答

3

IE允許您通過CSS(行爲屬性)例如包括JavaScript文件。但是,如果只有進入CSS代碼的用戶纔會看到它,那麼這是安全的。 如果限制允許的屬性,它也是安全的 - 但請注意,您也必須限制值(再次感謝IE,它允許使用JavaScript的動態值)。

3

這是在這個意義上的安全,用戶可以用自己的重寫你的CSS,無論如何,與瀏覽器插件等。只要確保一個用戶不能影響其他用戶的CSS。

使用專用的逃逸功能,以處理數據使你的數據庫,但。例如MySQL的mysql_real_escape_string()

+0

+1給你。我會建議閱讀以下內容:http://www.owasp.org/index.php?title=XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.234_-_CSS_Escape_Before_Inserting_Untrusted_Data_into_HTML_Style_Property_Values – David 2011-01-24 22:52:42

2

允許用戶輸入自己的站點的CSS代碼通常應該是安全的。瀏覽器已經實現了他們自己的用戶代理CSS,以強化對無格式元素的通用樣式。 (從CSS2規範:「用戶代理的默認樣式表應該以滿足文檔語言的一般呈現期望的方式呈現文檔語言的元素」)另外,確保網站可訪問性的很大一部分是允許用戶用戶代理CSS。

正因爲如此容易做的安全性,並不意味着它應該是,但是。舉一個例子,任何用戶都可以很容易地將一個元素的背景圖像設置爲網絡上不適當的圖像。提供這種能力只會爲您的網站帶來惡意攻擊,我認爲應該避免這種攻擊。