热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring:绑定到命令时转义输入

Spring:

如果使用的是FormController,则可以通过重写initBinder(HttpServletReques,ServletRequestDataBinder)方法来注册新的属性编辑器。此属性编辑器可以转义html,Javascript和sql注入。

如果使用的是属性编辑器,则请求对象中的值将在分配给命令对象之前由编辑器处理。

注册编辑器时,我们必须指定其值必须由编辑器处理的项目的类型。

抱歉,现在我没有该方法的语法。但是我确信这就是我们实现这一目标的方式。

已编辑

我认为以下语法可以工作

在您的控制器中覆盖如下所示的以​​下方法

@Override
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
super.initBinder(request, binder);
binder.registerCustomEditor(String.class,
new StringEscapeEditor(true, true, false));
}

然后创建以下属性编辑器

public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavascript;
private boolean escapeSQL;
public StringEscapeEditor() {
super();
}
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavascript,
boolean escapeSQL) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavascript = escapeJavascript;
this.escapeSQL = escapeSQL;
}
public void setasText(String text) {
if (text == null) {
setvalue(null);
} else {
String value = text;
if (escapeHTML) {
value = StringEscapeUtils.escapeHtml(value);
}
if (escapeJavascript) {
value = StringEscapeUtils.escapeJavascript(value);
}
if (escapeSQL) {
value = StringEscapeUtils.escapeSql(value);
}
setvalue(value);
}
}
public String getasText() {
Object value = getvalue();
return (value != null ? value.toString() : "");
}
}

希望这对您有帮助





推荐阅读
author-avatar
我活该难受G
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有