목록전체 글 (155)
Rootable의 개발일기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ctykns/btspdJTOcOs/TaiakwEJ5i4mzyjAoBarsK/img.png)
📌 세션이 필요한 이유 1. HTTP는 비연결성 특성을 갖고 있어 사용자를 식별하지 못한다. 즉, 별도 처리 없이 사용자의 정보를 유지하지 않는다. 2. 1번 문제점을 해결하기 위해 쿠키를 선택할 수 있다. 하지만 쿠키는 다음과 같은 문제점이 있다. 쿠키 값은 클라이언트에서 임의로 변경할 수 있다. 쿠키에 보관된 정보는 훔쳐갈 수 있고, 한번 훔쳐가면 평생 사용할 수 있다. 쿠키 값은 단순하고 규칙성이 있어 보안면에서 취약하다. 🔎 대안 클라이언트와 서버가 서로를 식별하기 위해 쿠키를 써야 하는 점은 동일하다. 하지만 다음과 같은 조건을 충족시킨다면 보안 측면에서 안전하게 통신할 수 있다. 쿠키에 중요한 정보를 담지 않는다. 쿠키로 전달되는 세션 ID(식별자)는 사용자 별로 예측 불가능한 임의의 토큰(랜..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfrcuS/btso0OnGpgT/PaGW7SVK5iqeXZ71DBhG40/img.png)
📌 단순한 오류 메시지 vs 자세한 오류 메시지 🔎 단순한 오류 메시지 # 단순한 오류 메시지required : 필수 값입니다.range : 범위 오류입니다. 범용성이 좋아 여러 곳에서 사용할 수 있다.메시지를 세밀하게 작성하기 어렵다. 🔎 자세한 오류 메시지 # 자세한 오류 메시지required.item.itemName=상품 이름은 필수입니다.range.item.price=가격은 {0} ~ {1} 까지 허용합니다. 범용성이 떨어진다.메시지를 세밀하게 작성할 수 있다. 범용성을 사용하다가 필요한 경우에만 자세한 오류 메시지를 사용하도록 메시지 단계를 두자 자세한 메시지일수록 우선순위를 높게 준다. 스프링은 MessageCodesResolver라는 것으로 이러한 기능을 지원한다. 📌 MessageC..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCjrNE/btso12lKNfb/swL8kK12BfyIS5NE80CKnk/img.png)
📌 Bean Validation이란 검증 기능을 매번 코드로 작성하는 것은 번거롭고, 검증 로직은 대부분 범위나 빈값을 체크하는 일반적인 로직이다. 애노테이션으로 일반적인 검증 로직을 모든 프로젝트에 적용할 수 있도록 공통화하고, 표준화한 것 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 즉, 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술 중에 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. 📌 스프링에 Bean Validation 적용 Bean Validation 의존 관계를 추가해야 한다. //build.gradleimplementation 'org.springframework.boot:s..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tnY6Q/btsoSmyWaSY/rDxyaXUktYtyXM3qoL2L1K/img.png)
📌 필요성 고객이 브라우저에서 타입에 맞지 않는 값을 입력하거나 정해진 범위를 벗어난 값을 입력했을 때, 입력 값에 대한 검증이 필요하다. 이유는 다음과 같다. 1. 고객이 입력했던 값을 유지해야 한다. - 언제든지 고객에게 재입력 기회를 줘야 서비스의 연속성이 유지될 수 있다. 2. 올바른 입력인지 안내해야 한다. - 고객의 올바른 입력을 유도해야 한다. 3. 타입 미스매치와 같은 바인드 실패 상황에서도 컨트롤러가 실행되도록 해야 한다. - 페이지에서 강제로 이탈시키는 것을 막아야 서비스 연속성이 유지될 수 있고, 이는 고객 만족도와 연결된다. 💡 클라이언트 및 서버에서의 검증고객과 가까운 클라이언트 검증은 조작할 수 있어 보안에 취약하다. 또한, 서버만으로 검증하는 것은 고객 사용성이 떨어진다. ..