전체 글8 Next.js 서버 React2Shell 보안취약점 침해 대응 회고 Next.js 서버가 뚫려 약 3일 동안 암호화폐 채굴에 쓰였습니다. 침입 경로는 React2Shell 취약점(CVE-2025-55182)으로 추정됩니다.이 글은 이상 징후를 발견한 순간부터 침입 경로를 추적하고 재발 방지책을 적용하기까지의 기록입니다.배경Next.js 애플리케이션을 AWS EC2에서 pm2로 실행해 운영하고 있었습니다. 그런데 어느 날부터 평소 1초 정도 걸리던 API 응답이 10초 정도로 느려졌습니다.원인 파악응답이 느려진 원익을 파악하기 위해 EC2의 자원 사용률을 조회해보니, 평소 5~10% 였던 CPU 사용률이 3일 전부터 99%를 유지하고 있었습니다. top 명령으로 프로세스 현황을 살펴보니 처음 보는 이름의 프로세스가 CPU 대부분을 점유하고 있었습니다.프로세스 이름을 AI에.. 2026. 10. 8. Loki로 로그 모니터링 시스템 구축하기 일하던 개발 회사에 로그 모니터링 시스템이 없었습니다. 그러다 보니 다음과 같은 불편함이 생겼습니다.여러 서버를 거쳐 처리되는 API의 로그를 추적하기 어려웠습니다.서버 오류 발생 시 사용자가 제보해야 알 수 있었습니다.API별 월간 호출 수, 평균 처리 시간 같은 통계를 내기가 어려웠습니다.이를 해결하고자 로그 모니터링 시스템 도입을 제안했고, 직접 구축까지 맡게 되었습니다.로그 모니터링 시스템이란?로그 모니터링 시스템은 여러 서버에서 발생하는 로그를 별도의 저장소에 모아 두고, 이를 조회하고 감시할 수 있게 해 주는 시스템입니다. 로그 모니터링 시스템이 없어도 로그를 관리할 수는 있지만, 필요한 기능을 직접 구현해야 해서 번거롭습니다. 로그 모니터링 시스템을 사용하면 이런 일들을 간편하게 처리할 수 .. 2026. 10. 7. 내부망에서 Docker 네트워크 대역 충돌 장애 해결 내부망 환경에서 Docker Compose로 배포한 서버에 특정 PC 한 대만 접속하지 못하는 문제가 발생했습니다. 다른 PC에서는 잘 접속되는데, 이 PC에서 접속하면 타임아웃 오류로 접속이 되지 않았습니다. 오류 해결을 위해 원인을 찾아간 과정과 해결 방법을 순서대로 정리해보겠습니다. 이 글에서는 접속이 안 되는 PC를 '발신지', 대상 서버를 '목적지'라고 부르겠습니다.원인 탐색오류의 원인을 찾기 위해 확인한 사실은 다음과 같습니다.다른 PC에서는 목적지에 잘 접속되었습니다.발신지에서 목적지가 아닌 다른 서버에는 잘 접속되었습니다.발신지에서 요청을 보내도 목적지의 애플리케이션 로그에는 요청 기록이 남지 않았습니다.목적지나 발신지 어느 한 쪽이 장애가 있는게 아니라, 발신지에서 목적지로 접속할 때만 .. 2026. 10. 7. 커머스 플랫폼 개발 전 알아야 할 법적 요구사항 한국에서 커머스 서비스를 운영하려면 거래 기록을 어떻게 보존할 지, 개인정보를 어떻게 다뤄야 하는 지 등 법률로 정해진 의무들이 있습니다. 이걸 모르고 서비스의 DB를 설계하면 나중에 설계를 갈아엎어야 할 수도 있기에 개발 전 반드시 짚고 넘어가야 합니다.이번 글에서는 그러한 법적 의무들에 대해 알아보도록 하겠습니다.본 글은 개발자 시점에서 정리한 자료이며, 법률 자문이 아닙니다. 작성 과정에서 법령 해석이나 조항 인용에 오류가 있을 수 있습니다. 실제 사업 진행 시에는 관할 기관 또는 전문가의 자문을 받으시기 바랍니다. 또한 법령은 개정될 수 있으므로 글 작성 시점(2026년 5월) 이후의 변경사항은 반영되어 있지 않을 수 있습니다. 법적 지위 구분법령에서는 커머스 플랫폼의 관계자들을 다음과 같이 구분.. 2026. 5. 21. JWT 토큰에 대해 JWT 토큰이란?JWT 토큰은 Json Web Token의 약자로, 웹 통신 시 클라이언트의 인증에 사용되는 JSON 형태의 토큰 값입니다.최근, 서버 측에서 토큰 인증 방식으로 요청을 보낸 클라이언트의 신원을 확인할 때 JWT 토큰을 많이 사용합니다. JWT토큰은 Session 기반 인증과는 다르게 인증 시 서버측에서 별도의 DB 조회가 필요 없어 효율적이라는 장점이 있습니다.JWT 토큰의 구조eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJleHAiOjE3NTA4MjYyODgsImlhdCI6MTc1MDczOTg4OH0.cSW65JDV0wTpSIfQV4KPE8kWuN.. 2025. 6. 29. Java의 equals와 hashcode메서드 이해하기 Java 프로그래밍을 하다 보면 Object 클래스의 equals()와 hashCode() 메서드를 종종 보게 됩니다.이 두 메서드는 단순해 보이지만, 올바르게 이해하고 사용하지 않으면 예상치 못한 버그를 유발할 수도 있습니다.오늘은, 이 두 메서드의 목적과 관계에 대해 한 번 알아보겠습니다. equals() 메서드 - 논리적 동등성의 기준Java에서 객체 비교를 이야기할 때 두 가지 관점이 있습니다:물리적 동등성(Reference Equality): 메모리 상에서 동일한 위치(동일한 참조)를 가리키는지. ('==' 연산자를 사용하여 비교 가능)논리적 동등성(Logical Equality): 두 객체가 같은 값을 가지고 있는지 확인. (서로 다른 메모리 위치에 존재하더라도 상관없음)equals() 메서드.. 2025. 3. 16. 이전 1 2 다음