大规模分配不安全的绑定器配置休息框架,JSON http请求:我没有使用Spring MVC

时间:2018-05-28 06:23:12

标签: java rest web-services

我正在使用Jersey实现一个rest-full Web服务,它以json格式接受来自客户端的http请求。

在强化扫描中,我遇到了严重问题: - “质量分配不安全的粘合剂配置”。

我想将htttp请求中的json值绑定到我的服务器端代码中的模型类,因为它是一个小模块,我想避免使用Spring MVC框架。

下面是我的代码片段工作正常,但我需要将json请求映射到下面的模型类,而不使用Spring MVC。

@POST
@Path("/TimRestService")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response crunchifyREST**(JsonObject model**, @Context HttpServletRequest request) {


    System.out.println(model);

    return Response.status(200).entity(model).build();

}

这是模型类: -

public class ActivateService  {

public String mWalletToken;
public String topMerchantEMPID;
public String serviceCategory;
}

我检查了这些链接,但答案更具体到Spring MVC fmwrk:

What is the solution for Mass Assignment: Insecure Binder Configuration Vulnerability? How to fix Mass Assignment: Insecure Binder Configuration (API Abuse, Structural) in java

2 个答案:

答案 0 :(得分:1)

它也可以通过将其放置在pojo或模型类中来工作

@JsonIgnoreProperties(ignoreUnknown=true)
public class ActivateService  {
    [...]
}

资源:

https://stackoverflow.com/a/39013609/8782229

答案 1 :(得分:0)

这可以通过Jacksonson实施。 Jackson是最好的JSON提供程序/解析器之一,可以在Jersey实现中与Jersey一起使用.REST服务将生成和使用JSON,并且JSON序列化和反序列化在幕后自动发生

将View类创建为:

public class View {

public static class Editable {}
public static class Viewable extends Editable {}
public static class Internal extends Viewable {}
}

将Model类创建为:

@JsonIgnoreProperties(ignoreUnknown = true)
@XmlRootElement(name = "activateService")
public class ActivateService implements Serializable  {

@JsonView(View.Editable.class)
public String mWalletToken;
@JsonView(View.Editable.class)
public String topMerchantEMPID;
@JsonView(View.Editable.class)
public String serviceCategory;
  }

和Rest -full web服务方法:

@POST
@Path("/TimRestService")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public Response crunchifyREST(@JsonView(View.Editable.class) final ActivateService model, @Context HttpServletRequest request) {

在JAX-RS中,如果使用@JsonView(View.Editable.class)注释一个模型(请求或响应),在我们的例子中添加方法,Jackson将只序列化或反序列化用@JsonView注释的字段( View.Editable.class)。 在我们的例子中,客户端只能传递editableField,如果客户端传递任何其他字段,服务器将默默地忽略它们。

在pom.xml中使用以下依赖项

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson- 
databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-json -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.19.4</version>
    </dependency>

来源: - https://www.owasp.org/index.php/Mass_Assignment_Cheat_Sheethttp://lifelongprogrammer.blogspot.com/2015/09/using-jackson-view-to-protect-mass-assignment.html