【问题标题】:How to Intercept parameters sent as JSON data in HTTPRequest to Controller?如何拦截在 HTTPRequest 中作为 JSON 数据发送到控制器的参数?
【发布时间】:2015-04-22 13:12:04
【问题描述】:

我们正在构建一个定制的 JEE 安全层,以确保解决所有可能的 OWASP 问题。这个安全层被构建为需要在控制器(在我们的例子中是 Spring)之前运行的过滤器,以便它们可以在请求实际到达控制器之前执行。这些安全过滤器查看用户输入并执行各种清理。一种这样的卫生措施是 JSON 卫生措施,在其中查找来自客户端的 JSON 数据是否存在任何恶意内容。

目前,Spring 控制器使用@RequestBody 注解将传入的 JSON 数据普及到 POJO 类中。

我有完全相同的question,但是,是否有一种通用的方法可以从请求中检索参数(作为 JSON 数据发送)?

我的目标是在过滤器中有一个 JSON 净化器代码,以便它 拦截并解析所有传入控制器的 JSON 数据。

【问题讨论】:

  • 这听起来像是中间件的工作(查看所有传入请求并可以处理或修改它们的代码)。我不明白你想要做什么的细节,所以我无法提出比这更具体的建议。
  • @jfriend00 我在问题中添加了一些背景上下文。希望它提供您正在寻找的信息。我们没有为此目的使用任何中间件或工具,而是构建一个自定义层作为安全层。
  • 我们至少需要查看一些代码,了解您如何处理传入的 http 请求。如果您不使用任何框架,则基本上需要实现自己的中间件处理。
  • 我正在编写简单的 Java Servlet 过滤器,它在控制器之前被调用。如果我想检查这个控制器内的参数,我只需说 request.getParameter("x") 来获取它的值,检查和清理。但是当 JSON 数据来自客户端时,request.getParameter("X") 给了我 NULL 但这些 JSON 数据是在控制器中使用 @RequestBody 方法在控制器中接收的。我的问题是,在这个 JSON 场景中我应该使用什么来代替 request.getParameter ?
  • 这是一个 node.js 问题 (JavaScript) 还是某种 Java 开发环境。使困惑!你的 JSON 被解析了吗?

标签: json spring sanitization input-sanitization


【解决方案1】:

我能够使用以下技术读取和检索 json 数据。 StringBuffer jb 终于有了完整的 JSON 数据。

StringBuffer jb = new StringBuffer();
  String line = null;
 BufferedReader reader = request.getReader();
    while ((line = reader.readLine()) != null)
      jb.append(line);
  }

参考:HttpServletRequest get JSON POST data

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多