批量分配不安全的绑定器配置 rest 框架,JSON http 请求:I我没有使用Spring MVC



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

在强化扫描中,我遇到了关键问题:-"批量分配不安全的粘合剂配置"。

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

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

@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:

批量分配:不安全的绑定程序配置漏洞的解决方案是什么? 如何修复 Java 中的批量分配:不安全的绑定程序配置(API 滥用、结构(

这可以通过杰克逊来实现。 Jackson 是最好的 JSON 提供程序/解析器之一,可以在 Rest 实现中与 Jersey 一起使用。REST 服务将生成和使用 JSON,JSON 序列化和反序列化在后台自动发生

将视图类创建为:

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

将模型类创建为:

@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( 注释,在我们的例子中 add 方法,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_Sheet 和 http://lifelongprogrammer.blogspot.com/2015/09/using-jackson-view-to-protect-mass-assignment.html

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

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

资源:

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

最新更新