readonly를 풀고 ID를 강제 입력 했을 때의 대응법
985
작성한 질문수 6
안녕하세요.
수정 폼에서 개발자도구를 통해 상품 id input의 readonly를 지우면 임의로 값을 입력할 수 있게 되는데
수업 예제의 경우 itemRepository의 update 메소드에 id를 받는 로직이 없어서 소용이 없지만
id 로직을 추가하면 변경이 가능한 것을 보고 작성하거나 선택할 수 없는 옵션을 강제로 입력하여 보냈을 때의 대응법이 궁금해서 질문드립니다.
예제와 같이 아예 처리 로직이 없을 수도 있지만
예를 들어 앞의 문항을 무엇을 선택했느냐에 따라 뒷 문항의 선택지가 제한되는 등의 설문폼이 있는 경우 일단 선택문항 전체에 대해 일괄적으로 로직처리를 할 것 같은데 이런 경우 어떻게 대응을 하게 되나요?
1. 변형을 방지하는 프론트엔드의 스킬과 노하우가 있다..?
2. 백엔드에서 검증 로직을 철저하게 짠다..?
3. (예제와 같이) 아예 손도 못대게 불필요한 로직을 배제한다..?
답변 1
1
안녕하세요.
제가 프론트엔드에 대해서 자세히 몰라 아는 선에서 말씀드리자면
유효성 검사(validation)은 프론트에서도, 백엔드에서도 진행 되어야 한다고 알고 있는데요,
가령 회원가입과 관련해서 ID의 최소 길이에 대한 검증이 필요하다면 회원가입 앞단에서는
input 태그에서
<input type="text" id="name" name="name" required minlength="4" maxlength="8">
값이 필수로 입력되어야 하고, 최소-최대 길이에 대한 검증을 앞단에서 처리하면서
동시에 서버 단에서도
@PostMapping("/sign-up")
public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
if (errors.hasErrors()) {
return "sign-up";
}
// 회원가입
}
처리하여 2번의 검증 절차를 통해 문제를 방지 할 수 있는거죠. 또한 이렇게 해야 서버 단에서의 검증 로직이 돌지 않아 부하를 줄일 수 있구요.
예를 들어, 동시에 10만명이 회원가입을 한다고 했을 때 5만명은 화면 단에서 검증이 걸린다면 서버에서 (동시에) 처리해야 할 유효성 검사에 대한 부하가 줄겠죠?
,
이러한 validation 관련하여서는 "스프링 유효성 검사" , "Spring validation" 키워드로 검색해 보시면 많은 정보들을 보실 수 있으시고 곧 출시하게 될 영한님의 MVC-2편 강좌 에서 다룰 내용으로 알고 있습니다.
,
말씀하신 id 로직을 추가하면 변경이 가능한 것을 보고 작성하거나 선택할 수 없는 옵션을 강제로 입력하여 보냈을 때의 대응법이 궁금해서 질문드립니다.
,
불필요한 파라미터가 넘어온다 했을 때 서버 단에서 해당 로직을 처리하는 부분이 없다면 무시하는 것을 볼 수 있습니다.
@Controller
public class TestController {
@GetMapping("/form")
@ResponseBody
public String form(@RequestParam Integer id, @RequestParam String name) {
return id + " " + name; // id와 name을 반환하여 화면에 echo하는 코드
}
}

설명에 틀린점이 있다거나 더 궁금한 사항이 있으시면 댓글 남겨주세요. 영한님께서 댓글 남겨주실 것 같습니다~
mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.
0
29
1
servlet과 container에 대한 질문입니다
0
54
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
84
1
jsp 의존성 수정 요청
0
121
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
157
1
save() 메서드 문의
0
77
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
112
1
request-body-json
0
94
2
MVC 패턴의 적용 단위
0
103
1
RequestMapping을 이용한 핸들러, 어댑터
0
124
2
save 후 결과화면
0
100
2
jsp를 이용한 view
0
102
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
189
1
수업 코드 제공 관련 문의
0
106
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
109
3
파일 오픈 시
0
75
1
스프링 배치 관련
0
81
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
115
1
postman으로 /request-body-json-v1 호출시 500 error
0
105
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
90
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
119
1
console log 출력 관련 질문입니다.
0
79
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
146
1
html 변경하는 부분 적용 문제
0
108
1





