springmvc验证控制器中post/put方法中的所有参数

0kjbasz6  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(250)

我有很多控制器,我想验证所有的参数提交的形式对xss攻击。我不想单独保护每个控制器,而是希望有一个组件作为所有提交表单的拦截器,并检查提交的参数。
我写了一个过滤器,它使用反散度来修正参数值,但效果太好了。我的意思是它逃避了一切,甚至是不该逃避的丰富内容。用springmvc框架清除用户输入workhttps://jeevanpatil.wordpress.com/2011/07/22/prevention_of_xss/
因此,我需要一些解决方案,以逃避具体的参数在控制器,你知道有什么解决办法吗?我计划在controller中每个方法的参数旁边创建注解,例如@xssescaped,然后只转义那些参数。

hgqdbh6s

hgqdbh6s1#

输入时的html编码可能会损坏数据。它可能仍然不安全,因为插入属性、样式表或脚本的数据仍然可以执行代码,即使使用html编码。它可能没有覆盖页面上的所有数据,因为有些值可能没有通过控制器,或者可能从那时起就被修改了。
有很多方法可以绕过输入过滤器(请参阅xss过滤器规避作弊单)。这个 RequestWrapper 以链接答案为例过滤掉 eval() ,但是请进来 e<script></script>val() 相反,你会得到 eval() 再次作为输出。修好它,它们就会变成别的东西。
html编码是视图层的职责。在这里,您可以确保页面上使用的所有数据都根据所使用的上下文进行了适当的编码。xss是通过遵循跨站点脚本编写防止作弊表中的规则来防止的。像thymeleaf这样的模板系统将在默认值下进行html编码。

相关问题