-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
바인딩에 관하여.
19.02.27 22:41 작성 조회수 150
2
Student클래스에서
겨우 Student객체의 Name메소드의 getter, setter를 작성했는데 다시 그걸 BindNever를통해 입력을 받지 않는 이유가 무엇인가요?? 경우에따라 취사 선택하여 데이터를 받기 위함인가요???
답변을 작성해보세요.
4
SEJONG IT EDU
지식공유자2019.02.28
안녕하세요.
네 맞습니다. 경우에 따라 선택가능한 데이터만 받기 위한건데요. 강좌에서는 자세한 설명을 하지 않았지만 BindNever 쓰는 것 자체가 해커의 오버포스팅(Over-Posting) 공격을 막기 위함입니다.
가정을 해봅시다.
현재 우리 Student 페이지에 존재하는 세 필드들이 있습니다. Name, Age, Country가 있는데요.
이 중 Country 필드가 더 이상 데이터베이스에 저장할 필요가 없어져서 Html에서 뺐다고 하겠습니다.
하지만 해커는 페이지에 Country 필드가 사라졌다고해서 이 값을 서버로 못보내는게 아닙니다.
포스트맨/피들러 같은 툴 또는 간단한 자바스크립트 코드를 통해서 서버로 Country 값까지 악의적으로 보낼 수 있어요.
우리는 분명 Country 값이 필요없어져서 차단을 시켜야되는데 서버에서는 일단 HttpPost요청을 통해서 Country 값까지 들어왔으니 어쩔 수 없이 Country 값까지 데이터베이스에 저장하게 되는겁니다. 물론 기타 방법들을 통해 또 가려내는 방법이 있겠지만 어쨌거나 코드는 간결해야되어서 최대한 간단한 코드를 통해 차단을 시키는 겁니다. 그게 바로 BindNever가 되겠죠.
상황에 따라 차단(BindNever)을 해야 될 데이터 또는 무조건 받아야(Bind) 할 데이터가 있기 때문에 쓰게 되는 거구요.
답변 1