2008-10-06 80 views
4

我正在尋找爲客戶啓動託管CMS類服務。我應該清理託管CMS的HTML標記嗎?

就像它那樣,它會要求客戶輸入文字,這些文字將被送達任何來訪問他們網站的人。我正計劃使用Markdown,可能與WMD(SO使用的實時降價預覽)結合使用來處理大塊文本。

現在,我應該消毒他們對html的輸入嗎?鑑於只有少數人編輯他們的'CMS',所有付費客戶,我應該剝離不良的HTML,還是應該讓他們瘋狂?畢竟,這是他們的「現場」

編輯:最主要的原因,爲什麼我會做到這一點是讓他們使用自己的javascript,並擁有自己的css和div的,什麼不是輸出

回答

12

爲什麼不會您清理輸入?

如果你不這樣做,那麼你正在招惹災難 - 無論是你的客戶還是你自己,或者兩者兼而有之。

+1

如果他允許第三方Javascript,任何事情都可以真正安全嗎? – 2008-10-06 21:19:50

1

至少解析其條目只允許某個「安全」的HTML標籤子集。

1

我認爲你應該始終清理輸入。大多數人使用CMS是因爲他們不想從頭創建自己的網站,他們希望輕鬆訪問編輯他們的網頁。這些用戶很可能不會嘗試將文本加以清理,但通過保護它們,您可以保護用戶。

2

您還會再次保護心懷不滿的員工,跨越客戶攻擊或任何其他類型的愚蠢行爲。

無論使用者還是觀衆,您都應該隨時進行消毒。

4

你的問題問:

「編輯:主要的原因,爲什麼我會做到這一點是讓他們使用自己的javascript,並擁有自己的css和div的,什麼不能爲輸出」。

如果你允許用戶提供任意的JavaScript,那麼消毒輸入是不值得的。跨站腳本技術(XSS)的定義基本上是「用戶可以提供JavaScript並且某些用戶不好」。現在

,有些網站允許用戶提供JavaScript和他們減輕兩種方式之一的風險:

  1. 主機在不同的網域個人用戶的CMS的。 Blogger和Tumblr(例如myblog。blogspot .com vs. blogger.com),可以防止用戶的模板竊取其他用戶的Cookie。你必須知道你在做什麼,並且不要在根域下託管任何用戶內容。
  2. 如果用戶內容永遠不會在用戶之間共享,那麼惡意用戶提供的腳本無關緊要。然而,CMS是關於共享,所以這可能不適用於此

有一些黑名單過濾器可以工作,但他們只工作今天。 HTML規範和瀏覽器會定期更改,這使得過濾器幾乎無法維護。列入黑名單是解決安全性和功能性問題的一條可靠途徑。

處理用戶數據時,請始終將其視爲不可信。如果您在產品的早期階段未解決問題並且您的方案發生變化,那麼幾乎不可能返回並找到所有XSS要點或修改產品以防止XSS發生而不會影響用戶。