하기 전에, 귀하의 경우에는
<%@ taglib uri="/WEB-INF/tld/esapi.tld" prefix="esapi" %>
<html lang="<esapi:encodeForHTMLAttribute>${myvar}</esapi:encodeForHTMLAttribute>">
를 동적 받고있어 값이 삽입되어 있기 때문에 "이름"으로 HTMLAttribute
를 사용
<html lang="${myVar}">
적절한 구문은 다음과 같을 것이다 태그의 속성. 그것이 p- 태그에서 말하는 경우라면 esapi:encodeForHTML
을 사용합니다. 또한
<p>
<esapi:encodeForHTML>${myVal}</esapi:encodeForHTML>
</p>
값은 esapi:encodeForJavaScript
렌더링에 자바 스크립트 기능에 의해 수신 될 경우.
인코딩에는 항상 적절한 컨텍스트가 있으며 컨텍스트에는 "이 데이터를 처음받는 통역자는 무엇입니까?"라는 질문에 응답됩니다.
===============================
충분히 명확하지 않았습니다. 필자가 제공 한 예제는 원시 HTML로 저장되는 것처럼 들릴 때 HTML 속성에서만 이스케이프 처리됩니다. 위의 일반적인 예가 수정되었습니다.
<form method='post' name='<s:property value=<esapi:encodeForHTMLAttribute>'tableBean.formName'<esapi:encodeForHTMLAttribute>/>' action='Notification.action'>
내가 JSTL 구문에 사용 해요, 그래서 100 % 확신 여기 변수를 포장하는 가장 좋은 방법이 아니에요 :
당신의 예제를 사용하려고합니다. 당신은 그걸 가지고 놀아야 할 것입니다. 당신은 더 나은 그것을 사용하는 방법을 이해하는 property tag reference을 읽어야
public class TableBean{
String formName;
public String htmlAttributeEscapedFormName(){
return ESAPI.encoder().escapeForHTMLAttribute(formName);
}
}
왜 동적 '이름'을 양식에 설정합니까? –
원래 구현을 코딩하지 않았습니다. 이것은 상속 된 레거시 코드입니다. 내 임무는 전체 구현을 변경하지 않고 Fortify 결과를 수정하는 것입니다. –
질문 : "formName"은 사용자가 제어 할 수 있습니까? 그것이 아니라면, 내가 추천 한 esapi 버전조차도 논점이되며 거짓 긍정으로 표시 될 수 있습니다. – avgvstvs