분류 전체보기221 스프링부트 JSESSIONID URL 노출 문제 해결하기 feat.Oauth2 문제 상황Spring Boot에서 OAuth2 소셜 로그인을 구현하던 중, 세션이 만료된 상태에서 로그인을 시도하면 계속해서 알 수 없는 에러가 나는 것을 확인하였습니다. nginx 로그를 통해 원인을 분석한 결과 JSESSIONID가 URL에 노출되는 문제 때문에 oauth2 로그인 과정이 거절 되었다는 것을 알 수 있었습니다. 문제가 발생했던 Oauth2 URLhttps://example.com/oauth2/authorization/kakao;jsessionid=6A536F40C07B383860906AB325E68945 위 url의 끝에 jsessionid가 붙어있는것을 확인할 수 있고 이러한 URL rewriting은 보안상 취약점이 될 수 있으며, oauth2 url에 불필요한 jsessionid.. 2024. 10. 29. 백준 1599번 민식어 java 풀이 문제무엇인가를 창조하는 것은 어렵다. 오민식은 지금까지 어려운 다른나라의 언어를 쓰면서 백성들이 고통에 받는 것을 슬퍼하고 새로운 언어를 만들고자 했다. 그는 창조의 고통에 시달리던 중에 결국 오영식에게 자신의 못다 이룬 꿈을 꼭 이루어달라면서 오영식에게 창조의 임무를 넘겼다.오영식은 자신의 형이 창조에 고통에 시달리는 모습을 보고 마음이 아파서 자신은 창조를 하지 않기로 했다. 영식이는 표절을 하기로 했는데 세계적인 추세에 맞게 영어를 표절하기로 했다.영식이는 자신의 형의 이름을 따서 민식어라고 이름붙였다.민식어에는 알파벳이 20개가 있다.영어는 a b c d e f g h i j k l m n o p q r s t u v w x y z의 순서이지만, 민식어는 a b k d e g h i l m n n.. 2024. 10. 26. Spring 테스트에서 @Transactional과 비관적 락 사용 시 주의점 오늘은 Spring 테스트 코드를 통해서 방 입장 동시성 문제를 해결한 비관적 락 코드를 테스트하면서 발생한 문제에 대해서 다뤄보겠습니다.문제 상황Spring에서 데이터베이스 테스트를 작성할 때, 우리는 종종 @Transactional 어노테이션을 사용합니다. 이 어노테이션은 각 테스트 메서드를 하나의 트랜잭션으로 감싸고, 테스트가 끝나면 자동으로 롤백 하여 데이터베이스를 초기 상태로 되돌립니다.이번 테스트에서는 비관적 락을 통해 5명 제한인 방에 10명이 동시에 입장을 시도하면 5명이 방에 참여를 하고 5명은 참여하지 못하는 것을 테스트 시나리오로 수립하였습니다. 그러나 생각했던 시나리오와는 달리 계속해서 lock timeout이 발생하였습니다. 원인을 파악하기전에 작성한 코드를 먼저 살펴보겠습니다... 2024. 10. 14. 오픈소스 - Naver Arcus Client - MapDelete, MapGet JMH 벤치마킹 오늘은 Naver Arcus Client 오픈소스 프로젝트에 대한 성능 분석 결과를 공유하고자 합니다. 특히 문자열 연결(String Concatenation) 부분에 초점을 맞추어 분석을 진행했습니다.1. 배경Naver에 대한 관심으로 시작된 이 분석은 오픈소스 프로젝트를 탐색하는 과정에서 시작되었습니다. 코드를 살펴보던 중, MapDelete와 MapGet 클래스의 getSpaceSeparatedMkeys() 메소드에서 복잡한 for 루프와 StringBuilder를 사용하는 것이 눈에 띄었습니다. 왜 이렇게 복잡한 방식을 사용했는지 궁금해졌고, 이를 간단한 String.join()으로 리팩토링해보기로 결정했습니다.2. 분석 대상분석 대상은 MapDelete와 MapGet 클래스의 getSpaceSe.. 2024. 10. 10. 2024 OSSCA 표준 프레임워크 및 MSA, 쿠버네티스 환경 살펴보기 9월 11일 발대식을 시작으로, 2024 OSSCA 표준 프레임워크 및 MSA 멘티로 활동을 시작하게 되었습니다. 현재는 3주차를 앞두고 Kubernetes 환경을 주제로 발표를 준비하며 eGovFramework의 Kubernetes 환경 구성을 분석해 보았습니다.분석할 레포지토리 소개: egovframe-msa-edu오늘 분석할 레포지토리는 eGovFramework organization의 egovframe-msa-edu입니다. 이 프로젝트는 클라우드 네이티브 기반의 행정 및 공공기관 서비스 확산을 지원하기 위해 설계되었으며, 다양한 MSA(Microservices Architecture) 교육 자료를 제공합니다. Kubernetes 환경 구성 분석먼저, 레포지토리의 k8s 폴더 구조를 살펴보겠습니다... 2024. 10. 2. redis로 채팅 메시지 다룰 때 이스케이프 조심해야 되는 이유 최근 앱 출시를 위해서 밤낮으로 진행하고 있는 예비군 택시 파티 프로젝트의 채팅 부분에서 문제가 생겼다. "안녕하세요" 이런 식으로 줄바꿈 없이 메시지를 보내면 문제없이 채팅이 전송되고 조회되지만 "안\n녕\n하\n세\n요"와 같이 중간에 줄바꿈을 넣어서 채팅을 보내게 된다면 저장은 되지만 채팅을 조회할 때 Json Parsing 에러가 발생했다. 왜 이런 문제가 생겼을까?현재 예비군 택시 파티 프로젝트의 채팅은 대략 아래 그림과 같은 순서로 이루어지고 있다. 1. 먼저 stomp를 통해서 클라이언트가 전송한 메시지 객체가 server로 들어온다. 2. server는 메시지 객체를 kafka producer를 통해서 consumer로 전송한다. 3. consumer는 이벤트를 수신하면 redis에 메시지.. 2024. 9. 8. 이전 1 2 3 4 5 ··· 37 다음