XSS (교차 사이트 스크립팅) 공격을 방지하기 위해 HTML 자리 표시 자 텍스트로 HTML 이스케이프 처리하는 것이 HTML 템플릿 엔진에서 매우 좋습니다. StringTemplate에서이 동작을 수행 할 수 있습니까?StringTemplate에서 HTML을 기본적으로 이스케이프 처리하는 방법은 무엇입니까?
내가 등록을 시도 정의 AttributeRenderer
format
이 "raw"
가 아닌 HTML을 탈출하는 :
stg.registerRenderer(String.class, new AttributeRenderer() {
@Override
public String toString(Object o, String format, Locale locale) {
String s = (String)o;
return Objects.equals(format, "raw") ? s : StringEscapeUtils.escapeHtml4(s);
}
});
그러나이 경우 StringTemlate뿐만 아니라 자리 표시 자 텍스트뿐만 아니라 템플릿 텍스트 자체를 빠져 있기 때문에 실패합니다. 예를 들어이 템플릿 :
<html>
<head>
<title>Example Title</title>
</head>
<body>
<p>Not escaped because of <code>format = "raw"</code>.</p>
</body>
</html>
아무도 도와 드릴까요 :
example(title, content) ::= <<
<html>
<head>
<title>$title$</title>
</head>
<body>
$content; format = "raw"$
</body>
</html>
>>
은 다음과 같이 표현되어 있습니까?
물론,'format = "xml-encode"'를 추가하는 것을 잊기 쉽습니다. 그래서 내 질문은 기본적으로 ** 인코딩을 가능하게하는 방법이었습니다 **. – dened