java—在筛选器中读取多部分请求而不使用请求本身

hc2pp10m  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(141)

我陷入了一个非常奇怪的问题。
我有一个遗留应用程序,我需要保护它免受xss攻击。我之前的人添加了经典的filter/requestwrapper解决方案,该解决方案覆盖getparametermap和getparametervalues,以清除恶意脚本中的参数值。问题是,这仅适用于urlencoded表单,但当请求来自多部分formdata表单时,不会调用这些方法,因此requestwrapper无法清除恶意代码。
所以我需要做同样的事情,但是在多部分formdata表单上。经过长时间的研究,我尝试了以下解决方案:
我试过了 @MultipartConfig 注解,但它仅适用于servlet,而不适用于过滤器。
我发现我可以补充 allowCasualMultipartParsing=true 在里面 META-INF/context.xml ,这允许requestwrapper与urlencoded表单一样工作,但由于某些原因,这会中断应用程序使用特定Angular 插件上传文件的页面,因此这种方式不适用于我的场景。
因此,我尝试扩展过滤器本身,捕获多部分表单请求并使用commons fileupload读取参数以检查恶意脚本,但它似乎“消耗”了请求,因此在过滤器执行和应用程序中断后,请求为空。我甚至尝试克隆httprequest,以便使用gson处理请求的副本,但这导致了应用程序崩溃。
你还有其他想法或建议吗?我只需要从多部分请求中读取表单字段,而不使其失效/使用它。从几周前开始,我就一直在解决这个问题。
先谢谢你。
顺致敬意,

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题