쏘댕

[웹 시큐어 코딩] owasp-java-html-sanitizer 적용 본문

공부/Java

[웹 시큐어 코딩] owasp-java-html-sanitizer 적용

ssodang 2015. 7. 10. 15:31

#Java #Spring

#Maven


사용자 입력 가능한 input, textarea 등에 스크립트 적용 불가하도록 XSS filter가 필요해서,

owasp-java-html-sanitizer를 이용하여 input 입력 받은 값들의 태그를 모두 제거하도록 하였다.



pom.xml에 디펜던시 추가!

<dependency>
<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
<artifactId>owasp-java-html-sanitizer</artifactId>
<version>r239</version>
</dependency>


XssStringConverterUtil.java 생성!

import org.owasp.html.Handler;
import org.owasp.html.HtmlPolicyBuilder;
import org.owasp.html.HtmlSanitizer;
import org.owasp.html.HtmlStreamRenderer;

public class XssStringConverterUtil {

public static String doFilter(String source) {
StringBuilder sb = new StringBuilder();
HtmlPolicyBuilder htmlPolicyBuilder = new HtmlPolicyBuilder(); // 모든 태그를 허용하지 않는 상태. 태그는 전부 빈문자로 치환함.
HtmlSanitizer.Policy policy = htmlPolicyBuilder.build(HtmlStreamRenderer.create(sb, new Handler<String>() {
public void handle(String x) {
throw new AssertionError(x);
}
}));
HtmlSanitizer.sanitize(source, policy);
return sb.toString();
}

}


모델의 setter에 적용해서 jsp에서 java로 받아올 때 변환되도록 하였다.

(spring controller에서 모델로 받기 때문에 setter 통해서 들어옴)

public void setDescription(String description) {
this.description = description.isEmpty() ? description : XssStringConverterUtil.doFilter(description);
}







Comments