Back End
-
Redis 전체 키 조회, 삭제 등 명령어 모음Back End/etc 2023. 4. 28. 19:07
단순 기록용 포스팅입니다. 와... 안쓴지 얼마됬다고 기억이 안나는건지... 역시 기록을 해야 빠르게 찾을 수 라도 있나 봐요... Redis 명령어 redis:6379> keys * // 전체 키 조회 redis:6379> flushall // 전체 키 삭제 redis:6379> hgetall {keyName} // 해당 키에 매핑된 모든 필드 조회 redis:6379> del {keyName} // 해당 키 삭제 redis:6379> hget {keyName} {fieldName} // 해당 키에 매핑된 특정 필드 조회 redis:6379> hdel {keyName} {fieldName} // 해당 키에 매핑된 특정 필드 삭제
-
클라이언트 IP 알아내는 법Back End/etc 2023. 4. 25. 19:16
개인 기록용 포스팅입니다. Reference [Java] 1. 클라이언트 실제 접속 IP 가져오기 클라이언트 실제 접속 IP 가져오기 linked2ev.github.io 서론 어떠한 리소스에 대한 접근이 가능한 Token, URL, Cookie 등을 생성할 때, 해당 리소스가 공유되지 않도록 하고 싶을 때가 있다. 유저 ID 로 식별하면 되나, 유저 ID 로 식별이 불가능한 경우 IP 로 접근제한을 걸 수도 있다. (Netflix 처럼..) 클라이언트 IP 를 가져오는 법 X-Forwarded-For 헤더(중개서버마다 다름)에 담긴 값을 가져오면 된다. 해당 헤더에는 여러개의 IP 값이 존재할 수 있기 때문에 필요한 IP 를 뽑아서 쓰면된다. X-Forwarded-For 헤더 기준 보통 1번째 값이 원 ..
-
CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (2) - 가상의 브라우저에 대한 CSRF 공격, 서버의 책임과 브라우저의 책임Back End/보안 2023. 4. 23. 21:22
목차 1. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가 2. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (2) - 가상의 브라우저에 대한 CSRF 공격, 서버의 책임과 브라우저의 책임 3. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (3) - CSRF 공격을 직접 시도해보자 (Safari 브라우저) 4. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (4) - SOP, CORS, Browser, Third-Party Cookie, SameSite) 5. CSRF(Cross-Site Request Forgery)..
-
CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가Back End/보안 2023. 4. 23. 21:07
해당 포스팅 시리즈는 현재 목차 2번까지 작성되었습니다. 목차 1. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (1) - CSRF 공격이란 무엇인가 2. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (2) - 가상의 브라우저에 대한 CSRF 공격, 서버의 책임과 브라우저의 책임 3. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (3) - CSRF 공격을 직접 시도해보자 (Safari 브라우저) 4. CSRF(Cross-Site Request Forgery) 개념부터 재현, 방어까지 (4) - SOP, CORS, Browser, Third-Party Cookie, SameSite) 5. ..
-
커스텀 어노테이션을 직접만들어 개발비용을 줄여보자!Back End/유지보수 2023. 3. 26. 16:26
개인적인 주관이 섞여있는 포스팅으로 정답은 아닙니다. 범용적이고 관례적인 어노테이션은 동료개발자와 협업에 유리한 이점이 있다는 것 고려하시며 Trade-off 를 저울질 해보시길 바랍니다. 커스텀 어노테이션을 동료개발자와 충분한 협의 없이 사용 시 유지보수비용이 증가하게 됩니다. 필자가 불편했던 어노테이션들 대표적으로 @PreAuthorize, @Sql, @RequestMapping 등과 같이 String 값을 반복적으로 넣어주어야 하는 어노테이션들이 매우 불편하게 느껴졌다. 사용빈도는 꽤 큰 것에 비해, IDE 자동완성 기능 이후 따로 String 값을 지정해주어야 하는 두번의 작업으로 느껴졌다. @GetMapping("/product/vip") @PreAuthorize("hasRole('ROLE_VI..
-
[트러블슈팅] IntelliJ에서 Java 코드 인식 못할 때Back End/트러블슈팅 2023. 3. 22. 20:16
IntelliJ 에서 Java 코드를 인식 못할 때가 있다. 당황스럽기 그지 없는데 매번 이유도 달라 정리해둔다. 1. Gradle Import IntelliJ에서 Gradle 프로젝트 작동안될때 간혹 Gradle 프로젝트를 IntelliJ에서 불러올때 Gradle이 정상작동하지 않을때가 있습니다. 전혀 코드가 작동하지 않는데요. 이럴때 2가지 해결방법이 있습니다. 1. Import Gradle Project 먼저 IntelliJ 우측 jojoldu.tistory.com 2. IntelliJ 캐시 무효화 (Invalidate Cache) 3. gradle 이나 pom.xml 에 SpringBoot 버전과 호환되는 JDK 인지 확인하기
-
[트러블슈팅] Pageable 사용 시 Swagger 에서 쿼리파라미터 불일치 문제 원인 및 해결Back End/트러블슈팅 2023. 3. 22. 20:09
일반적인 Pageable 을 인자로 받는 컨트롤러 보통 Pageable 을 사용한 RestController 는 아래와 같은 모양을 갖는다. @GetMapping("/user/product") fun findUserProducts( @ApiIgnore session : HttpSession, @PageableDefault(size = 24) pageable: Pageable ): ResponseEntity { val userId = session.getUserId() val data = userProductService.findSliceByUserId(userId, pageable) return ResponseEntity.ok(CommonResponse(data = UserProductResponse.o..
-
[트러블슈팅] 이메일 유효성 검사 regex (feat. 특수문자 + 포함, 이메일 구성)Back End/트러블슈팅 2023. 3. 21. 18:58
이메일에 특수문자가 포함될 수 있어? 고객이 이메일로 abc+xyz@gmail.com 를 사용하고 싶은데 계정이 생성안된다고 CS 가 들어왔다. 이메일은 로컬파트@도메인파트 로 구성이 되어있다. 필자는 로컬파트에 + 가 포함된 이메일을 처음 목격한지라 허용을 해줘야하는지에 대해 판단하기 위해 Gmail 에서 + 가 포함된 이메일이 생성가능한지 먼저 검증을 해보았다. 아래의 구글블로그에서 + 를 이메일의 로컬파트에 사용가능하다고 명시하였다. 2 hidden ways to get more from your Gmail address Posted by Robby Stein, Associate Product Marketing Manager I recently discovered some little-known w..