입력 데이터 이스케이프, CSP, HTTPOnly 설정, 브라우저 내장 필터로 XSS 공격에 대응하자. 1. XSS 공격의 위험성 XSS(Cross-Site Scripting) 공격은 웹 애플리케이션의 보안 취약점을 이용하는 공격이다. 이 공격은 웹 애플리케이션의 사용자 인터페이스에 악의적인 스크립트를 주입하여, 다른 사용자들의 브라우저에서 실행되게 만든다. XSS 공격은 주로 웹 환경에서 발생하며, 기본적으로 클라이언트 측에서 발생하는 보안 문제이다. 다시 말해, XSS(Cross-Site Scripting) 공격은 사용자의 중요한 정보, 예를 들어 쿠키나 세션 토큰 같은 개인정보를 위험에 빠뜨릴 수 있는 심각한 보안 위협이다. 공격자들은 이런 방식으로 사용자의 계정에 무단으로 접근할 수 있다. 또한,..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.comSQL 인젝션 방어 방법: PreparedStatement 기본 사용부터 MyBatis, JPA 적용까지 SQL 인젝션은 애플리케이션에서 사용자로부터 입력받은 데이터를 적절히 처리하지 않을 때 발생하는 보안 취약점이다. 데이터베이스에 직접적으로 악의적인 SQL 쿼리를 주입하는 이 공격은 시스템의 보안을 심각하게 위협한다. 이를 방어하는 세 가지 방법을 알아보자 1. PreparedStatement 기본 방법 SQL 인젝션 공격의 예시 웹 애플리케이션에서 사용자의 로그인 정보를 확인하는 간단한 SQL 쿼리가 있다고 가정하자. SELECT * FROM users WHERE username = '사용자입력값' AND password = '사용자입력값'; 사용자가 정상적인 값을 입력하는 것이 기대되지만, 공격자..
헥사고날 아키텍처 - 클래스 의존성 주입 및 도메인, 엔티티의 객체 변환 과정 헥사고날 아키텍처를 도입할 때 주의해야 할 점에 대해서 알아보자 우리는 기존에 Spring에서 자주 사용되는 MVC 패턴을 사용하고 있었다. 그런데 팀원 중 한 분이 '헥사고날 아키텍처를 도입해 보는 것은 어떨까?'라는 아이디어를 제안하셨고, 그 아이디어를 함께 탐구하고자 한다. 이 글에서 다룰 내용은 해당 YouTube 영상에서 영감을 받았다. NHN FORWARD 22에서 김민중 개발자님의 '클린 아키텍처 애매한 부분 정해 드립니다' 발표 내용을 참고하여, 우리 프로젝트에 헥사고날 아키텍처를 도입했다. 아래 영상은 헥사고날 아키텍처를 적용하는 시점에 보면 굉장히 유용한 내용이니 꼭 봤으면 좋겠다. 유튜브 링크: https:..
탄력적 IP와 DNS 연동해서 EC2 만들기 1. 테라폼으로 ECS 생성 중 이슈 발생 우리 프로젝트는 AWS의 ECS를 활용하여 스프링 부트 애플리케이션을 운영하고 있다. 그리고 스프링 부트 애플리케이션에서 Zipkin의 추적 기능을 사용하기 위해서는, Zipkin 서버의 정확한 주소(엔드 포인트)가 필요했다. 그러나 테라폼으로 ECS 클러스터와 EC2 인스턴스를 재생성할 때마다 Zipkin 서버의 IP 주소가 변경되는 문제가 발생했다. 처음 고려했던 해결책 중 하나는 Application Load Balancer(ALB)를 사용하는 것이었다. 이 방식은 Zipkin 서버를 위한 별도의 ALB를 생성하고, 이 ALB의 퍼블릭 IP를 스프링 부트 애플리케이션에 설정하는 것이었다. 하지만, ALB는 주로 ..
Dynamic 블록으로 AWS 서비스와 태스크 정의하기 1. ECS에서 태스크 정의와 서비스 간략 정리 ECS에서 태스크 정의와 서비스는 컨테이너 기반 애플리케이션을 배포하고 관리하는 핵심 요소다. 태스크 정의는 컨테이너의 실행 구성을 정의하며, 서비스는 여러 인스턴스에서 컨테이너를 실행하고 관리한다. 이 두 요소를 함께 사용하여 애플리케이션을 확장하고 가용성을 보장할 수 있다. 태스크 정의와 서비스는 서로 연동하여 컨테이너화된 애플리케이션을 실행하고 관리한다. 태스크 정의에서는 컨테이너 이미지, 포트 매핑, 리소스 요구 사항 등 컨테이너 실행에 필요한 정보를 정의한다. 서비스는 이러한 태스크 정의를 기반으로 컨테이너를 여러 인스턴스에 배포하고 관리한다 💡 태스크 정의에서 말하는 컨테이너 이미지란? 컨테..
테라폼을 이용해서 ECS Cluster를 생성할 때 필수적인 용량 공급자(capacity provider)를 알아보자 1. 용량 공급자란? ECS Cluster에서 용량 공급자의 역할 기존에 AWS Console을 사용해서 ECS Cluster를 생성하던 경우에는 용량 공급자가 무엇인지 모를 수 있다. 용량 공급자는 AWS ECS 클러스터에서 컨테이너 태스크가 실행될 때 사용할 컴퓨팅 리소스(예: EC2 인스턴스, Auto Scaling 그룹)를 어떻게 관리할지 결정하는 역할을 한다. 간단히 말해, 용량 공급자는 태스크가 실행되는 '환경'을 설정하고 관리하는 규칙이라고 생각할 수 있다. AWS Management Console을 통해 ECS 클러스터를 생성할 때, 대부분의 설정은 AWS가 자동으로 처리한..
스프링 부트 3 버전에서 p6spy를 적용하는 방법을 알아보자. build.gradle 아래 의존성을 build.gradle에 추가해 준다. // P6spy implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 그리고 코끼리 모양의 'Load Gradle Changes'를 클릭해 주고 프로젝트를 실행한다. 그리고 쿼리가 실행되는 콘솔을 보면 이렇게 파라미터가 들어가 있다. 이렇게만 해도 사실 파라미터에 무슨 값이 들어가 있는지 확인은 가능하지면 여전히 한눈에 띄진 않는다. 콘솔 출력 형식을 바꾸려면 formatter를 커스텀해서 적용해 주면 된다. P6SpyFormatter 아래는 configure 설정 코드 내용이다. imp..
Terraform에서 Launch Template, 오토 스케일링 설정하기 이번 글에서는 테라폼에서 EC2를 생성할 때 ALB를 연동하려면 필수적으로 launch template과 auto scaling이 필요하다. 각 모듈에 대해서 살펴보자. 1. ECS를 EC2 기반으로 구축할 때 ALB 연동하는 경우와 연동하지 않는 경우의 차이 AWS ECS(Elastic Container Service)를 EC2 기반으로 구축할 때, ALB(Application Load Balancer)를 연동하는 경우와 그렇지 않은 경우의 차이를 고려해야 한다. 테라폼을 사용하여 이를 구성하는 과정을 살펴보겠다. 1-1. EC2 기반 ECS 서버 구성 ALB 미연동 EC2 이 경우에는 간단한 EC2 인스턴스를 만들어주는 걸로 ..