Jsoup Element.val() 解码编码的 html 内容
Jsoup Element.val() decodes the Encoded html content
我在表单中有一个输入标签,其值是根据 URL 的查询参数之一设置的。为了 XSS 保护,我在输入标签中设置查询参数值之前 html 对其进行编码。
在 URL 中发送的原始值:
SomeValueWithSpeci@lCh@cters<""><''>
HTML Java代码生成的内容:
<form>
<input type='hidden' value="SomeValueWithSpeci@lCh@cters<""><''>" />
</form>
Java 解析上述html内容的代码。
Document doc = Jsoup.parse(htmlResponse);
Elements formElements = doc.getElementsByTag("form");
Elements inputTag = null;
for(Element form : formElements){
inputTags = form.geElementsByTag("input");
}
for(Element input : inputTags){
System.out.println(input.val());
}
输出:
SomeValueWithSpeci@lCh@cters<""><''>
提交表单时,浏览器解码 html 内容并将实际值发送给接收者。
我正在编写一个测试来验证编码。它将请求发送到端点并接收此 html 响应。如果我打印响应,则编码字符串不会被解码,但是当我使用 Jsoup 库时,它会被解码。我相信,当我解析 HTML 时,编码值会被解码,或者当我检索输入标签的值 'element.val()' 时,它会被解码。想知道它什么时候真正被解码。
而且,有什么方法可以检索使用 Jsoup 库时的编码值吗?
Apache Commons - StringEscapeUtils.unescapeHtml4
String text = ""bread"";
StringEscapeUtils.unescapeHtml4(text); // bread
我在表单中有一个输入标签,其值是根据 URL 的查询参数之一设置的。为了 XSS 保护,我在输入标签中设置查询参数值之前 html 对其进行编码。
在 URL 中发送的原始值:
SomeValueWithSpeci@lCh@cters<""><''>
HTML Java代码生成的内容:
<form>
<input type='hidden' value="SomeValueWithSpeci@lCh@cters<""><''>" />
</form>
Java 解析上述html内容的代码。
Document doc = Jsoup.parse(htmlResponse);
Elements formElements = doc.getElementsByTag("form");
Elements inputTag = null;
for(Element form : formElements){
inputTags = form.geElementsByTag("input");
}
for(Element input : inputTags){
System.out.println(input.val());
}
输出:
SomeValueWithSpeci@lCh@cters<""><''>
提交表单时,浏览器解码 html 内容并将实际值发送给接收者。 我正在编写一个测试来验证编码。它将请求发送到端点并接收此 html 响应。如果我打印响应,则编码字符串不会被解码,但是当我使用 Jsoup 库时,它会被解码。我相信,当我解析 HTML 时,编码值会被解码,或者当我检索输入标签的值 'element.val()' 时,它会被解码。想知道它什么时候真正被解码。
而且,有什么方法可以检索使用 Jsoup 库时的编码值吗?
Apache Commons - StringEscapeUtils.unescapeHtml4
String text = ""bread"";
StringEscapeUtils.unescapeHtml4(text); // bread