簡體   English   中英

為什么jsoup刪除內聯樣式表?

[英]why jsoup remove inlined stylesheet?

我使用jsoup保護我的應用程序免受XSS攻擊。 我得到所有的輸入參數,並在那上做Jsoup.clean。 但我有一個問題。

它刪除所有內聯樣式表! 為什么? 我在我的應用程序中有一部分,用戶可以編寫文本並將其作為公告發布。 他/她通過TinyMCE寫他/她的文本,並在用戶文本中添加一些html和樣式表。 在下面你可以看到tinymce創建的示例文本:

用戶輸入: Center Aligned Text
TinyMCE結果: <p style="text-align: center;">Center Aligned Text</p>
Jsoup.clean(text, Whitelist.relaxed())輸出: <p>Center Aligned Text</p>

正如可以看到Jsoup刪除風格

標簽。 我怎么能說它不刪除簡單的CSS?
謝謝。

默認情況下, 白名單類會刪除樣式,但您可以使用addAttributes("p", "style")輕松修改此行為並添加對style支持。

Whitelist.relaxed().addAttributes("p", "style");

說明

這在清理時將元素p屬性style設置為忽略。 只有p style才會被刪除!


驗證碼

只需復制粘貼此代碼並從main調用。

public static void main(String[] args) {
    String text = "<p style=\"text-align: center;\">Center Aligned Text</p>";
    String clean = Jsoup.clean(text, Whitelist.relaxed()
            .addAttributes("p", "style"));
    System.out.println(clean);
}

結果

<p style="text-align: center;">Center Aligned Text</p>

依賴

org.jsoup:jsoup:1.7.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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