V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wysnylc
V2EX  ›  问与答

SpringMVC 过滤 Json 数据中的 XSS

  •  
  •   wysnylc · 2016-06-28 18:33:14 +08:00 · 8131 次点击
    这是一个创建于 3074 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上午大神提示可以用 Jsoup 过滤,使用了之后过滤一般 XSS 和保留富文本没有问题。
    但是现在还有 Json 格式的请求,然后参考>Spring 拦截器从 Request 中获取 Json 格式的数据写了个 filter ,成功的读到了 Json 。
    但是一脸懵逼的不知道怎么改写 0.0 求大神指教蟹蟹

    15 条回复    2019-03-01 16:22:52 +08:00
    jhonRawls
        1
    jhonRawls  
       2016-06-28 23:33:50 +08:00   ❤️ 1
    如果用 request.getparam 之类的可以谷歌下 spring mvx filter xss 这个文章
    http://lawrence-zxc.github.io/2012/11/26/spring-mvc-xss/
    还有一种你是 requestbody 这种的话上面就不适合了 你需要改写你可以看下这个文章
    http://stackoverflow.com/questions/25403676/initbinder-with-requestbody-escaping-xss-in-spring-3-2-4
    反正不懂的多百度 百度不到的 多谷歌 用英文的关键词就行了
    其实 xss 可以在渲染或者响应输出的时候做,统一处理这样子的话 就不会漏掉
    wysnylc
        2
    wysnylc  
    OP
       2016-06-29 08:39:42 +08:00
    @jhonRawls 我找到的例子都是对输入过滤,所以就写了输入的。请问可以指点下输出过滤么 QAQ
    wysnylc
        3
    wysnylc  
    OP
       2016-06-29 08:51:51 +08:00
    @jhonRawls 第一篇文章和我现在的 filter 一模一样,但是不能过滤 json 的内容。</br>第二篇文章貌似讲的是输出过滤?好像并没有解决 requestbody 过滤的问题。
    jhonRawls
        4
    jhonRawls  
       2016-06-29 14:38:06 +08:00   ❤️ 1
    http://ju.outofmemory.cn/entry/63726
    这个是 response 可以过滤 ,我想 requestBody 应该也是一样的 拿到 json 属性 然后序列化成对象 这个要重写 spring mvc 转换 application/json 转换方法
    wysnylc
        5
    wysnylc  
    OP
       2016-07-01 11:31:34 +08:00
    @jhonRawls 这个我配置失败了,不知道什么问题。而且他这个过滤太死板,富文本会完全废掉。
    有基于 SpringMVC4 的实例么,难道都是在 nginx 做的么
    jhonRawls
        6
    jhonRawls  
       2016-07-01 18:03:54 +08:00   ❤️ 1
    富文本的话你前端可以做下过滤然后提交给后端,
    另外一种的话 你可以不过滤特殊字符,在渲染的时候你转译一下,比如你用 freemarker 的话 你可以参考下这个文章
    http://yshjava.iteye.com/blog/1870320
    wysnylc
        7
    wysnylc  
    OP
       2016-07-01 18:21:46 +08:00
    @jhonRawls 前端不安全,前端可以绕过。渲染转义不行,会把正常的标签也转没用。
    wysnylc
        8
    wysnylc  
    OP
       2016-07-01 18:23:18 +08:00
    @jhonRawls 实际上有方法过滤 <a href='http://www.open-open.com/jsoup/'>jsoup</a>可以白名单过滤。现在就是 json 不好过滤,并且没有发现什么 demo 可以参考。
    cnlinjie
        9
    cnlinjie  
       2016-07-05 08:46:45 +08:00
    @wysnylc 同遇到问题,目前近况如何~
    wysnylc
        10
    wysnylc  
    OP
       2016-07-26 10:51:43 +08:00
    @jhonRawls 我现在把表单过滤好了, ResponseBody 也可以过滤。但是有一种尴尬的情况就是,如果是用的 json 提交的数据但是是正常的后台渲染的数据的时候, xss 就会成功触发。
    我应该做 requestBody 的过滤还是 Response 的过滤呢?还是都做?没有思路呀 QAQ
    wysnylc
        11
    wysnylc  
    OP
       2016-10-11 17:39:56 +08:00
    @cnlinjie 现在已解决表单和 json 的 xss 过滤
    @jhonRawls 感谢提点!
    dreamflying3
        12
    dreamflying3  
       2017-09-08 10:12:41 +08:00
    @cnlinjie 在么,可以帮帮我么,我继承的 MappingJackson2HttpMessageConverter 这个类,不走子类的 read
    wysnylc
        13
    wysnylc  
    OP
       2017-09-08 12:41:58 +08:00
    @dreamflying3 断点确定是否真的没走,xml 中确定是否已经指定子类
    dreamflying3
        14
    dreamflying3  
       2017-10-19 10:01:19 +08:00
    @wysnylc 已经解决了。谢谢
    18732907626
        15
    18732907626  
       2019-03-01 16:22:52 +08:00
    @dreamflying3 我的跟你情况一样,也是不走子类,可以帮我么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3549 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:54 · PVG 18:54 · LAX 02:54 · JFK 05:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.