2013-05-04 28 views
1

You know that SimpleHtmlSanitizer.java only accepts the following markup ("b", "em", "i", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ul", "ol", "li"). It is good but I want "u", "sub", "a href=" & don't want "hr", "ul", "ol", "li". So I need to modify this class.當修改SimpleHtmlSanitizer.java,如何處理<a href=> (Gwt)?

Now look at the SimpleHtmlSanitizer.java (https://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/safehtml/shared/SimpleHtmlSanitizer.java?r=8653)&看看這條線在該類:

Arrays.asList("b", "em", "i", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "ul", "ol", "li")); 

你可以猜測,我們可以把我們的希望清單到該行代碼的權利。所以我將它修改爲:

Arrays.asList("b","i", "u", "h1", "h2", "h3", "h4","a href=")); 

除了「a href =」,該列表中的每個標記都可以正常工作。例如,當我把字符串Test <a href="car.com"><hr>hello</a>它沒有顯示正確的輸出。正確的輸出應該有超鏈接字符串<hr>hello

因此,如何在<a href=

+0

考慮到make-href可能以不安全的方式使用,所以您必須清理url。試試'test' - 如果你看到一個警告彈出窗口,你沒有正確地阻止在你的應用中運行任意的(和不安全的!)JavaScript。這只是一個例子,還有其他一些情況,請查看UriUtils的URL清理。 – 2013-05-04 19:29:08

回答

0

的情況下,這是因爲SimpleHtmlSanitizer進行消毒標籤無屬性,這<a href="">是不能修改SimpleHtmlSanitizer。因此,您必須捅入simpleSanitize()方法才能做到這一點。 但請注意,它沒有提到,所以你可能會使用另一種算法,它聞起來像不安全。

+0

Thax你科林安德烈,我不知道href是不安全的。 – Tum 2013-05-04 23:39:23