簡體   English   中英

驗證用戶輸入的HTML子集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM