[英]Validate User-Input HTML Subset
我正在尋找一種驗證用戶輸入HTML的方法,類似於您在評論表單中看到的內容。 用戶的輸入應限於最基本的標簽,例如p,ul,li,div,img。 唯一允許的屬性是樣式。
驗證可以通過Javascript在客戶端進行,也可以通過Ruby在服務器端進行。 我希望找到一個可以做到這一點的Javascript庫,或者至少找到幾個RegExes來做到這一點。
感謝您的建議。
您可以使用Sanitize過濾HTML。
使用您在問題中列出的示例元素,您將在驗證代碼中使用如下所示的內容:
Sanitize.clean(html,
:elements => ['p', 'ul', 'li', 'div', 'img'],
:attributes => {'
'all' => ['style']
}
)
正如我在上面的評論中所提到的,允許style
屬性可能很危險,特別是如果您允許<a>
標簽,因為如果用戶創建了一個覆蓋整個頁面的不可見鏈接,它就會使您容易遭受點擊劫持攻擊。
如果您確實希望允許<a>
標記,我建議您完全禁止使用style
並且可能在用戶提供的鏈接中添加rel=nofollow
:
Sanitize.clean(html,
:elements => ['p', 'ul', 'li', 'div', 'img', 'a'],
:add_attributes => {
'a' => {'rel' => 'nofollow'}
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.