분류 전체보기 (9) 썸네일형 리스트형 Spring Boot에서 API 보안을 지키는 방법 - JWT 인증 Spring Boot 환경에서 JWT(JSON Web Token)를 활용해 안전한 API 인증 시스템을 구축하는 방법에 대해 기록하려 합니다.JWT란 무엇인가JWT는 정보를 안전하게 주고받기 위해 사용하는 암호화된 토큰입니다. 이 토큰은 세 가지 부분으로 나뉩니다.Header: 토큰의 타입(JWT)과 서명에 사용된 암호화 알고리즘(HS256 등) 정보가 들어있습니다.Payload: Claims라고 불리는, 토큰에 담고 싶은 실제 데이터가 들어가는 곳입니다. 사용자 ID, 토큰 만료 시간, 발급 주체 등 다양한 정보를 자유롭게 넣을 수 있습니다.Signature: Header와 Payload를 합친 후, 비밀 키(Secret Key)를 이용해 암호화한 값입니다. 이 서명이 있기에 토큰의 내용이 위조되었는지.. [MySql] 동시성 테스트 테스트 조건상품 재고가 총 10개 있고, 2명이 동시에 1개씩 차감 요청을 보냈을 때최종적으로 8개가 남는가? 이 조건을 기준으로, 동시성 상황에서 수량 차감을 정확하고 안전하게 처리하는 방법을 테스트해 보겠습니다.대표적인 세 가지 락 방식을 정리하고, 각각 테스트 코드로 검증해봤습니다. 1. 비관적 락 (Pessimistic Lock)쉽게 말하면“다른 사람이 나 건드리지 못하게 무조건 잠가버려!” 특징가장 안정적인 방식동시 접근이 불가능하므로 충돌 없음다만 성능 상의 대기 시간이 발생할 수 있음적용 방법 (JPA + @Lock(PESSIMISTIC_WRITE))SeatRepository@Lock(PESSIMISTIC_WRITE)Optional findByProduct(Product product); .. [MySQL] 쿼리 성능 최적화 기록 점점 회원수가 늘어나고, 데이터가 증가하면서 쿼리의 실행 속도가 점차 느려지는 현상을 발견하게 되었습니다.이에 따라 SQL 쿼리 튜닝이 필요하다고 판단했고, 그 과정을 정리해보려고 합니다. (MySql version : 8.0.32, InnoDB)1. 성능 저하 쿼리 분석SELECT o.order_date_time , od.ticket_id , od.cancel_yn , ou.user_name , pd.products_name , pt.time_date , (SELECT oh.ticket_id FROM orders_history oh WHERE oh.ticket_id = o.ticket_id GROUP BY oh.ticke.. [KISA] 파라미터 변조 취약점 트러블 슈팅 📌 문제 발견어느 날, 한국인터넷진흥원(KISA)으로부터 우리 웹사이트에서 파라미터 변조 취약점이 확인되었다는 메일을 받았다.(아마도 화이트해커가 자진 신고를 한 것으로 보인다.)🔍 결제 프로세스 개요먼저, 결제 프로세스를 간단히 정리하면 다음과 같다.1️⃣ 결제 요청 (Step 1) 2️⃣ 인증 결과 반환 (Step 2) 3️⃣ 승인 요청 (Step 3) 4️⃣ 승인 결과 반환 (Step 4)( 해당 프로세스는 결제 대행사 개발 가이드 매뉴얼에 OPEN 되어있다. ) 🚨 취약점 분석문제의 원인을 찾기 위해 결제 요청 파라미터를 확인한 결과, 결제 금액을 1원으로 위변조했을 때 요청이 정상적으로 서버에 전달되는 것을 확인했다. (Step 1)(여기서 중요한 점은 결제 승인이 되면 안된다.) 이대로 .. 서버 모니터링 구축하기 신규 개발이나 운영 대응에 대한 부담을 줄이기 위해, 오픈 소스인 Prometheus와 Grafana를 사용하여 모니터링 환경을 구축해 보겠습니다. Node Exporter 설치하기1. Node Exporter 다운로드 및 설치Prometheus 공식 사이트에서 시스템에 맞는 Node Exporter를 다운로드합니다.다운로드한 파일의 링크 주소를 복사하여 설치합니다.wget [복사한 링크] 2. 압축 해제 및 실행위 명령어로 압축 파일을 해제하고, 압축 해제된 디렉토리로 이동합니다.cd [압축 해제된 파일명] 3. Node Exporter 실행Node Exporter 실행 후, metric 수집이 시작됩니다../node_exporter 4. 동작 확인 웹 브라우저에서 [EC2 인스턴스 IP]:9.. AWS VPC와 서브넷 (feat. 퍼블릭/프라이빗 서브넷 만들기) VPC란 간단히 말하자면, 가상으로 존재하는 데이터센터라고 말 할수 있다. VPC의 사용 사례EC2, RDS, Lambda 등의 AWS 컴퓨팅 서비스 실행다양한 서브넷 구성보안 설정 (IP Block, 인터넷에 노출되지 않는 EC2등 구성)VPC의 구성요소서브넷인터넷 게이트웨이NACL/보안그룹라우트 테이블NAT Instance/ NAT GatewayBastion HostVPC Endpoint 서브넷이란, VPC의 하위 단위로 VPC에 할당된 IP를 더 작은 단위로 분할한 개념이다.하나의 서브넷은 하나의 가용영역(AZ)안에 위치한다. AWS 서브넷의 IP 갯수AWS의 사용 가능 IP숫자는 5개를 제외하고 계산EX) 10.0.0.0/24라면,10.0.0.0: 네트워크 어드레스10.0.0.1: VPC Rout.. AWS S3 버킷 생성부터 업로드까지 먼저 AWS S3란 Simple Strorage Service로, 간단한 스토리지 서비스입니다.즉, 컴퓨터에 저장하는 저장소의 역할을 하는 서비스라고 생각하시면 됩니다. 우선 S3의 버킷부터 생성해 보겠습니다.이름을 정하고, 액세스 설정을 "모든 퍼블릭 액세스 차단"으로 설정합니다.그 후, 버킷 만들기를 클릭하면지정한 이름대로 버킷이 생성된것을 확인할 수 있습니다.이제, 생성된 버킷에 이미지 파일을 업로드 해보겠습니다.폴더만들기 클릭upload_test 입력 후 폴더 만들기 클릭upload_test폴더 안에 이미지를 업로드하겠습니다.이미지 파일 업로드 시작!업로드된 파일을 확인하기 위해 객체 URL의 경로를 클릭합니다.현재는 권한이 없기 때문에 에러가 발생하였습니다.이전 페이지로 다시 이동 후 퍼블릭으로.. AWS 서버 만들기 (#2. Linux) 이번에는 Linux 환경 서버 구축을 진행해보겠습니다.1. EC2 인스턴스 생성하기"Amazon Linux AMI" 선택!인스턴스 유형은 "t2.micro" 선택키페어는 Window 서버 설치할때 생성한 키페어 그대로 사용하겠습니다.인스턴스 생성 성공! 여기서부터 Window와 연결 방식이 다릅니다.2. 인스턴스 연결하기Linux 인스턴스 접속을 위해 일반적인 SSH 접속용 프로그램이 필요하며, 저는 Putty라는 SSH 툴을 사용하겠습니다.컴퓨터 사양에 맞는 프로그램을 다운로드 시작설치 후 먼저 puttygen.exe를 열어 줍니다.conversions - Import Key 클릭!미리 생성하둔 AWS_Study_key.pem을 열어줍니다.그 후, Save private Key를 클릭합니다.경로를 설정.. 이전 1 2 다음