2012-01-11 36 views
2

我的網站允許人們(任何擁有免費帳戶的人)輸入文字。到目前爲止,我一直在剝離HTML標籤等,以確保它們不會輸入任何惡意內容。但是,現在,客戶詢問是否可以允許用戶輸入html。允許用戶輸入HTML - 這是明智的嗎?

這背後的思想是,一些用戶可能希望添加更復雜的東西,如窗體。無論他們輸入什麼,都會在另一個頁面上顯示,因此他們可能需要其他人可以完成並提交的表單。

我的問題是,這有什麼風險?很顯然,我會逃避角色來降低注入攻擊的風險,但是我還需要注意什麼?

或者這是如此危險以至於我根本不應該這樣做?

+0

如果表單特別是一個實際建議的用例,您需要考慮表單可以提交到何處 - 只是HTML頁面上的表單不會執行任何操作。 – Random832 2012-01-11 17:43:25

回答

2

有很多風險 - XSS是最有名的。

如果您轉義字符,那麼HTML將不會顯示(而不是鏈接,您將看到例如<a href="http://example.com">link</a>)。

允許HTML是安全的方式是非常難

考慮在StackOverflow中使用類似於此處使用的降價編輯器 - wmd-new

1

一個挑剔的有點...

幫助確保他們無法進入任何惡意

不要假設你的安全是完全:)現在,上至實際答案...


這裏您最大的安全隱患是Cross-site Scripting

這一點是我覺得特別麻煩:

他們可能想一種形式,其他人可以填寫並提交

提交的是什麼?他們是否也在設計服務器端功能?還是他們正在寫表單提交給一些外部資源?這聽起來很危險。

然後你進入像script標籤的東西。非常惡意的事情可以在這裏完成。如果用戶足夠精明的製作他們自己的HTML表單(手工製作或者是一個正在使用的工具?)來將數據提交給其他資源,那麼他們可能足夠狡猾以編寫一些JavaScript。

使用editors designed for that可以實現簡單的標記效果。但形式是一個全新的球賽。這聽起來很危險。