在一般的HTML中若有如下代码;
<scritp>alert(‘你好,我在测试’)</ scritp>
会弹出攻击性弹出框,为了防止弹出框,我们必须转义特殊字符,在STRUTS中的源代码中的类TagUtils
有如下代码做处理
public String filter(String value) {
if (value == null) {
return (null);
}
char content[] = new char[value.length()];
value.getChars(0, value.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
case '\'':
result.append("'");
break;
default:
result.append(content[i]);
}
}
return result.toString();
}
在输出HTML代码时,碰见特殊字符如,<,>,&,”,\,会把它们转义成特殊字符。在STRUTS中的BeanWrite
标签中的有个属性filter,如果属性值为TRUE时,他的它会调用TagUtils的 filter方法,对特殊字符过滤
当然filter的默认值为TRUE,当然,在一些特殊的情况我们,比如富文本的,而需设置filter为false。
<scritp>alert(‘你好,我在测试’)</ scritp>
会弹出攻击性弹出框,为了防止弹出框,我们必须转义特殊字符,在STRUTS中的源代码中的类TagUtils
有如下代码做处理
public String filter(String value) {
if (value == null) {
return (null);
}
char content[] = new char[value.length()];
value.getChars(0, value.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
case '\'':
result.append("'");
break;
default:
result.append(content[i]);
}
}
return result.toString();
}
在输出HTML代码时,碰见特殊字符如,<,>,&,”,\,会把它们转义成特殊字符。在STRUTS中的BeanWrite
标签中的有个属性filter,如果属性值为TRUE时,他的它会调用TagUtils的 filter方法,对特殊字符过滤
当然filter的默认值为TRUE,当然,在一些特殊的情况我们,比如富文本的,而需设置filter为false。
本文深入探讨了STRUTS框架中如何通过TagUtils类对HTML特殊字符进行转义处理,以避免攻击性弹出框的产生。详细解释了filter方法的工作原理及在不同场景下的应用,特别关注了如何在需要展示富文本内容时灵活调整filter属性。
836

被折叠的 条评论
为什么被折叠?



