• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

바인딩에 관하여.

19.02.27 22:41 작성 조회수 150

2

Student클래스에서

겨우 Student객체의 Name메소드의 getter, setter를 작성했는데 다시 그걸 BindNever를통해 입력을 받지 않는 이유가 무엇인가요?? 경우에따라 취사 선택하여 데이터를 받기 위함인가요???

답변 1

답변을 작성해보세요.

4

안녕하세요.

네 맞습니다. 경우에 따라 선택가능한 데이터만 받기 위한건데요. 강좌에서는 자세한 설명을 하지 않았지만 BindNever 쓰는 것 자체가 해커의 오버포스팅(Over-Posting) 공격을 막기 위함입니다.

가정을 해봅시다.

현재 우리 Student 페이지에 존재하는 세 필드들이 있습니다. Name, Age, Country가 있는데요.

이 중 Country 필드가 더 이상 데이터베이스에 저장할 필요가 없어져서 Html에서 뺐다고 하겠습니다.

하지만 해커는 페이지에 Country 필드가 사라졌다고해서 이 값을 서버로 못보내는게 아닙니다.

포스트맨/피들러 같은 툴 또는 간단한 자바스크립트 코드를 통해서 서버로 Country 값까지 악의적으로 보낼 수 있어요.

우리는 분명 Country 값이 필요없어져서 차단을 시켜야되는데 서버에서는 일단 HttpPost요청을 통해서 Country 값까지 들어왔으니 어쩔 수 없이 Country 값까지 데이터베이스에 저장하게 되는겁니다. 물론 기타 방법들을 통해 또 가려내는 방법이 있겠지만 어쨌거나 코드는 간결해야되어서 최대한 간단한 코드를 통해 차단을 시키는 겁니다. 그게 바로 BindNever가 되겠죠.

상황에 따라 차단(BindNever)을 해야 될 데이터 또는 무조건 받아야(Bind) 할 데이터가 있기 때문에 쓰게 되는 거구요.