개인 공부/TIL25 TIL : Random VS SecureRandom (19) 🛠️ Random과 SecureRandom 난수 생성을 위해서 보통 Random을 사용하는데, SecureRandom을 권장하더라! 왜 그럴까? 🤔 Random 우선 Random은 난수를 만들기 위해 사용하는데, 정말 무작위 숫자를 만들지 않고 의사 난수를 생성한다. 의사 난수란? 무작위의 숫자처럼 보이는 규칙적으로 만들어진 숫자이다. Random을 조금 써본 사람이라면 같은 seed라면 같은 값이 나오는 것을 알고 있을 것이다! 이게 바로 의사 난수라서 그렇다. 😮 SecureRandom 이름에서부터 느껴지듯이 보안성이 더 좋을 것만 같다. 그렇다면 정확하게 어떤 점이 다를까? 1️⃣ 크기 Random은 48 비트까지 지원하지만 SecureRandom은 128 비트까지 지원한다! 같은 값이 나올 확률이.. 2022. 12. 20. TIL : N+1 문제, Fetch 전략 (18) ☄️ N+1 문제 N+1 문제란? JPA를 사용할 때 흔히 발생하는 문제 중 하나이다. 1번의 쿼리로 N개의 데이터를 가져왔는데, 그 데이터들을 처리하기 위해서 N번의 쿼리가 더 발생하는 문제이다. 🧐 언제 발생하는 문제일까? 몇몇 블로그에서 Fetch 전략에 따라 발생하는 문제라고 작성되어있다. EAGER와 LAZY는 실제 데이터를 가져오는 시점의 차이이지 N+1 문제에 궁극적인 원인이 아니다. JpaRepository에 정의한 메서드를 실행하면 JPA는 메서드 이름을 분석해서 JPQL 쿼리를 생성해 실행한다. JPQL 객체지향 쿼리 언어로 테이블을 신경 쓰지 않고 엔티티와 필드만으로 쿼리를 생성한다. 따라서, N+1 문제는 JPQL이 연관관계를 무시하고 해당 엔티티만을 기준으로 쿼리를 조회하기 때문에.. 2022. 12. 7. TIL : StringUtils 사용하기 (17) 🔧 StringUtils StringUtils란? Apache에서 지원하는 문자열을 다루는 라이브러리이다! Spring에서 지원하는 StringUtils가 있는데 그거완 다르다! 🧐 왜 사용할까? str1.equals(str2) // str2이 null 이라면 NullPointerException 발생! StringUtils 라이브러리는 Null-Safety하기 때문이다. 😎 사용하기 라이브러리이다 보니 의존성을 추가해야 한다. 1️⃣ Gradle implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.8' 2️⃣ Maven org.apache.commons commons-lang3 3.8 😋 지원 메소드 너무 많으니까.. 2022. 12. 1. TIL : JWT, Access Token / Refresh Token (16) 🔐 JWT JWT란? Json Web Token의 약자로 인증에 필요한 정보를 암호화시킨 JSON 토큰이다. JSON 데이터를 Base64 URL-safe Encode로 인코딩하였고, 토큰 내부에 위조 방지를 위한 전자서명도 들어있다. 🧷 구조 (Header.Payload.Signature) Header : 타입과 해시 알고리즘(ex. HMAC SHA256, RSA)의 종류를 담고 있다. Payload : 사용자 권한, 정보 등을 담고 있다. Key-Value로 이루어진 정보를 Claim이라고 한다. Signature : 헤더에서 정해진 알고리즘과 비밀키를 사용해서 암호화한 인증을 위한 데이터이다. 🧐 왜 JWT를 사용할까? Base64를 통해서 암호화한다는 것을 알기 때문에 누구나 Payload를 쉽게.. 2022. 11. 30. TIL : 서버 인증 방식 (쿠키, 세션, 토큰) (15) 🍪 쿠키 인증 방식 쿠키란? 서버를 통해서 클라이언트 쪽에 저장되는 Key-Value 형식의 문자열 덩어리이다. 이 쿠키를 통해서 클라이언트가 누구인지 인증한다. 🌊 Flow 클라이언트가 서버에 요청을 보낸다. 서버가 요청에 대한 응답 헤더에 쿠키를 담아서 보낸다. 이후 클라이언트가 요청을 보낼 때마다 쿠키를 같이 보내고 서버는 해당 쿠키로 클라이언트를 확인한다. 🧷 단점 요청 시 쿠키의 값을 그대로 보내기 때문에 보안성이 떨어진다. 쿠키에는 용량 제한이 있다. 브라우저마다 쿠키 지원 형태가 다르기 때문에 공유가 불가능하다. 📖 세션 인증 방식 쿠키의 보안 이슈를 해결하기 위해 클라이언트 쪽이 아닌 서버 측 저장소에 보관하는 방식이다. 쿠키와 마찬가지로 Key-Value의 형태의 데이터를 저장하고 Key.. 2022. 11. 30. TIL : Swagger 사용하기 (14) 📚 Swagger Swagger란? API 명세서를 자동으로 작성해주는 라이브러리이다. Swagger2, Swagger3이 있는데 버전이 다른 게 아니라 진짜 다른 라이브러리이다. (Spring Rest Doc) 1️⃣ 의존성 추가하기 implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' 2️⃣ Configuration 추가하기 @Configuration @EnableSwagger2 public class SwaggerConfig { /** http://loca.. 2022. 11. 28. 이전 1 2 3 4 5 다음