web-dev-qa-db-ja.com

一括割り当て:安全でないバインダー構成の脆弱性の解決策は何ですか?

私はこのコントローラをJavaで持っています:

@Controller
public class AuthenticationController extends AbstractController {

  @RequestMapping(value = Constantes.MAPPING_AUTH_BASE_ASP, method = { RequestMethod.POST })
  public String authenticate(@Valid ComunicationWithAspRequest comunicationWithAspRequest, BindingResult result,
      RedirectAttributes redirectAttributes, HttpSession sesion) throws Exception {
    ...
    ...
    ...
  }
}

Fortifyでコードをスキャンすると、オブジェクトcomunicationWithAspRequestにより大量割り当て:安全でないバインダー構成の脆弱性が発生します。バインドプロセスで使用されるHTTPリクエストパラメータと無視されるHTTPリクエストパラメータを制御することはできますか?

4
Brayan Reyes

問題を参照することもできます Rooを使用したSpring MVCでの大量割り当てを防止

あなたのケースでは、Spring MVCによって提供される@ InitBinderを使用できます。 @ InitBinderは、jsonおよびBeanマッピングのホワイトリストを指定します。

私の経験では、自動バインディングに@ RequestBodyを使用しました。 @ JsonIgnoreを追加して、マッピングに含めないプロパティを指定する必要があります。

SimpleController.Java

@RequestMapping(value="/simple")
public String simple(@Valid @RequestBody User user){
   simpleService.doSomething();
}

User.Java

public class User{
   private String name;

   @JsonIgnore
   private String dummy;

   public void getName(){return name;}
   public void setName(name){this.name = name;}
   public void getDummy(){return dummy;}
   public void setDummy(dummy){this.dummy= dummy;}

}
7
Ben Cheng