바인딩에 관하여.

미해결질문
luminary282 프로필

Student클래스에서

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

SEJONG IT EDU 프로필
SEJONG IT EDU 2달 전

안녕하세요.

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

가정을 해봅시다.

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

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

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

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

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

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