关于Grails的GSP中Form表单防止注入问题

10 篇文章 0 订阅

在Grails项目中发现,Grails框架居然“不能”防止form表单的注入,感觉很是奇怪,然后查找原因发现,在GSP页面中获取从服务器传来的数据,有2种写法:

1.${fieldValue(bean: user, field: "name")};

2.${user.name}

最开始完全没有注意这两种有什么不同,不过通过这次测试发现,这两种的确有一点不同,对于输入框输入”<input type=”text” name=”user”/>“的信息,也就是注入,会发现存储到数据库中也是上面字符串,并没有进行转码,然而从数据库读取这个数据解析到HTML的时候,会发现GSP中写法不一样解析就不一样。

对于1的情况而言,GSP会把特殊字符转义了,既是把上面的字符串转义成:

&lt;input type=&rdquo;text&rdquo; name=&rdquo;user&rdquo;/&gt;

对于2的情况而言,不会转义,会原原本本的输出,<input type=”text” name=”user”/>,继而出现一个输入框。

但是可以使用${user.name.encodeAsHTML()}解决转义问题。

总结:就目前而言,我倾向于用第二种写法,简洁一点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值