분류 전체보기 224

Redis

오픈 소스 인메모리 데이터 구조 저장소이다. 고속 성능과 다목적성을 위해 사용되며, 다양한 데이터 구조를 지원한다."Remote Dictionary Server"의 약자인메모리 데이터 저장데이터를 메모리에 저장하므로, 매우 빠른 읽기 및 쓰기 성능을 제공한다.데이터베이스, 캐시, 메시지 브로커 등 다양한 용도로 사용될 수 있다.다양한 데이터 구조 지원지속성 옵션주로 메모리에서 동작하지만, 데이터 지속성을 위해 스냅샷과 Append-Only File(AOF) 방식을 사용해 디스크에 데이터를 저장할 수 있다.복제마스터-슬레이브 복제를 지원하여 데이터를 여러 서버에 복제할 수 있다.고가용성 - Redis SentinelRedis의 고가용성(High Availability) 솔루션이다.마스터와 슬레이브 인스턴스..

🟩/Redis 2024.06.13

pasds-world 프로젝트 구현 방법

Redis를 활용한 JWT 화이트 리스트 방식 쿠키에 담아서 클라이언트로 전송쿠키 설정 SameSite: Strict, HttpOnly: true, Secure: true단일 기기 로그인 구현{ "sub": "3" or "wlsdyd4@naver.com", // memberId or email "jti": "4ee1b3d8-53bc-49ac-9667-e8d9f844f23b", // UUID "tokenType": "TEMPORARY", // EMAIL or TEMPORARY or ACCESS or REFRESH "exp": 1715610530 // tokenType.expiredTime}- redisKey: sub_tokenType- redisValue: jti- TTL: tokenType.exp..

🟩/JWT 2024.06.13

JWT 전송

쿠키브라우저가 쿠키를 자동으로 관리하고 요청마다 자동으로 전송한다.HttpOnly 속성으로 XSS 공격을 방지Secure 속성으로 네트워크 공격을 방지SameSite 속성으로 CSRF 공격을 방지헤더클라이언트 측 로컬, 세션 저장소에 저장하고, 각 요청 시 Authorization 헤더에 포함하여 전송한다. 저장소에 저장된 토큰은 자동으로 전송되지 않으므로 CSRF 공격을 방지저장소에 저장된 토큰은 JavaScript에서 접근할 수 있으므로  XSS 공격에 취약클라이언트 측에 안전하게 저장하기 위해 추가적인 보안 조치가 필요하다.  localStorage와 sessionStorage는 편리하지만, JWT를 저장하기에는 보안상 큰 위험이 있습니다. OWASP는 JWT를 쿠키에 저장하고 HttpOnly, S..

🟩/JWT 2024.06.12

키의 종류대칭키 (=비밀키)비대칭키공개키(public key)개인키(private key) (=비밀키)대칭키 생성 (KeyGenerator 클래스를 사용)// 키 생성기 인스턴스화 및 AES 알고리즘 지정KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");// 키 길이 설정 (예: 256비트)keyGenerator.init(256);// 키 생성SecretKey secretKey = keyGenerator.generateKey();256비트의 대칭키 길이면 안전하다.비대칭키 생성 (KeyGenerator 클래스를 사용)// 키 쌍 생성기 인스턴스화 및 RSA 알고리즘 지정KeyPairGenerator keyPairGenerator = KeyPairG..

🟩/Security 2024.06.12

화이트 리스트, 블랙 리스트

화이트 리스트 방식유효한 JWT 토큰을 서버에 저장하고 관리사용자가 로그아웃하거나 토큰이 만료되면 화이트리스트에서 해당 토큰을 제거장점토큰의 유효성을 확실하게 보장한다.토큰을 쉽게 무효화할 수 있다.특정 사용자의 세션을 쉽게 추적하고 제어할 수 있다.단점모든 유효한 토큰을 서버에 저장하고 관리해야 하기 때문에, 서버의 부하가 증가할 수 있다.블랙 리스트 방식무효화된 JWT 토큰을 서버에 저장하고 관리토큰이 만료되거나 사용자가 로그아웃할 때 해당 토큰을 블랙리스트에 추가장점화이트리스트에 비해 리소스를 적게 사용한다. 단점모든 토큰이 유효하다고 간주되므로, 새로운 공격 방식이 발견되면 대응이 늦어질 수 있다. ❓ 세션 인증 방식과 차이점이 뭘까?💡 서버 메모리둘 다 Redis를 이용한다고 생각하면 같다고 ..

🟩/JWT 2024.06.12