2015-05-04 61 views

回答

1

驗證輸入

我會用Hibernate驗證的@SafeHtml註釋:

class MyEntity { 

    @SafeHtml 
    private String title; 
    ... 
} 

不編碼輸入,驗證它。您想要阻止數據庫中的XSS或可能的XSS。

您可以驗證控制器和/或存儲庫中的輸入。

編碼輸出

使用OWASP的Java Encoder Project。在JSP中,你可以這樣做:

<e:forHtml value="${attr}" />

+0

是否有JPA規範或Hibernate獨有? – avgvstvs

+0

Hibernate Validator是Bean Validation 1.1的參考實現。 –

0

你貼的代碼是不是驗證代碼。這是輸出轉義。如果您想驗證的一段代碼,您要使用的許多ESAPI.validator().getValidInput()方法,在結合validation.properties.

同樣適用,如果你的想法是做輸出驗證一個,不這樣做。原則上這意味着你會在應用程序中接受惡意數據,然後在輸出時只檢查它的惡意。不要讓它進入你的應用程序!退出輸出。 總是根據上下文逃避輸出!

This answer給出了四個如何考慮輸出轉義的例子 - 不要忘記你的上下文!接受的答案也指導您提供更完整的解決方案來處理XSS。