![[보안] CSP(Content Security Policy)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5q8S7%2FbtsOfAZCBLb%2FuHqcyZN67XKdfFx3q5vOjk%2Fimg.png)
CSP(Content Security Policy)는 웹 보안 기능 중 하나로, 웹사이트에서 실행될 수 있는 콘텐츠의 출처를 명시적으로 제한하여 악성 스크립트 실행(XSS)을 방지하는 정책이다.쉽게 말하면, "어디서 온 콘텐츠만 허용할지"를 웹 브라우저에게 미리 알려주는 보안 지침이다. 필요 이유웹사이트가 XSS(크로스 사이트 스크립팅) 공격을 받으면 악성 JavaScript가 삽입되어, 사용자 쿠키 탈취, 악성 행위 수행, 세션 탈취 등이 일어날 수 있다.CSP는 이런 스크립트 실행을 "출처 기준으로 필터링" 하여 예방한다. 주요 지시어디렉티브설명예시default-src기본 출처 정책'self' (현재 도메인만 허용)script-src자바스크립트의 출처 제한'self' https://trusted.cd..
![[보안] CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKo4g2%2FbtsOe6LsPLQ%2FENaFlsDkgIiNikVd6t2jDK%2Fimg.jpg)
CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 사용자가 자신의 의지와 무관하게 원하지 않는 요청을 보내도록 만드는 공격 기법이다.간단하게 말하면, 사용자가 로그인한 상태를 악용해서 악성 사이트가 사용자의 권한으로 공격 요청을 보내게끔 유도하는 방식이다.또한 기본적으로 쿠키를 사용하지 않는다면 CSRF 공격을 대비할 필요는 없다. 예시사용자가 A사이트(예: 은행)에 로그인하고, 세션 쿠키가 브라우저에 저장되어 있음.사용자가 로그아웃하지 않은 상태에서 다른 악성 사이트 B를 방문함.B 사이트는 와 같은 요청을 자동으로 보냄.브라우저는 bank.com에 이미 로그인 되어 있으므로, 해당 요청에 세션 쿠키를 자동으로 붙여 전송함.결과적으로 사용자는 모르는 사이에 10,00..
![[보안] SOP와 CORS](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8UYJW%2FbtsOdBeuxuM%2FKvnIdRKHmNkkVvZml1r4T1%2Fimg.webp)
SOP(Same-Origin Policy)SOP 개념SOP(동일 출처 정책, Same-Origin Policy)은 웹 보안의 핵심 원칙 중 하나로, 서로 다른 출처(origin)의 리소스 간 접근을 제한하는 정책이다.이는 브라우저에서 자동으로 적용되는 보안 메커니즘이며, 사용자 정보를 보호하고 악의적인 스크립트의 실행을 막기 위해 고안되었다.동일 출처는 세 가지 요소가 모두 같아야 한다.프로토콜(http/https)도메인(example.com)포트번호(80/443 등)https://example.comhttp://example.com프로토콜 다름https://api.example.comhttps://example.com호스트(도메인) 다름https://example.com:443https://exampl..
![[보안] JWT(Json Web Token)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUiVjE%2FbtsOdFnqexJ%2FiSCpz7AEPmrPpQm8e8C0f1%2Fimg.jpg)
JWT는 JSON 포맷으로 정보를 저장하고 이를 서명(Signature) 하여 위·변조를 방지하는 토큰이다.서버가 클라이언트를 인증한 후, 인증 정보를 담은 토큰을 발급하여 클라이언트에게 전달하고, 이후 요청마다 이 토큰을 함께 보내도록 한다.stateless하다는 특징을 가진다. JWT의 구조JWT는 총 3개의 부분으로 구성되며, 각 부분은 .으로 구분된다.[헤더].[페이로드].[서명]헤더 (Header)토큰의 타입과 해싱 알고리즘 정보를 담고 있다.예: alg: HS256, typ: JWT 페이로드 (Payload)실제 인증 정보나 기타 데이터(클레임)가 담기는 부분이다.예: sub: 사용자ID, exp: 만료시간, role: ADMIN※ 이 부분은 암호화되어 있지 않기 때문에 노출될 수 있으며, 민..
![[Docker] Docker Compose](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ4rTl%2FbtsJfoCTWhU%2FCfi1RaJSboO8ccgtmJepX1%2Fimg.webp)
이 글은 인프런의 지식 공유자 박재성님과 데브위키님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.Docker ComposeDocker Copmose는여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 도구이다.도커 컴포즈는 도커 데스크탑 설치 시 기본으로 설치된다.한 번의 명령어로 여러 개의 컨테이너를 한번에 실행하거나 종료할 수 있다.로컬 개발 환경에서 활용하기 편리합니다. Docker Compose를 사용하는 이유여러 개의 컨테이너를 관리하는 데 용이여러 개의 컨테이너로 이루어진 복잡한 애플리케이션을 한 번에 관리할 수 있게 해준다. 여러 컨테이너를 하나의 환경에서 실행하고 관리하는 데 도움이 된다. 복잡한 명령어로 실행시키던 걸 간소화..
![[Docker] 도커 네트워크](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJC47W%2FbtsJuX53clH%2FkJyYICMih3ucXlk5gmx770%2Fimg.webp)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.도커 네트워크가상 네트워크Docker는 컨테이너 간의 통신을 관리하기 위해 가상 네트워크를 사용하며, 기본적으로 브리지 네트워크(bridge network)를 통해 각 컨테이너에 IP 주소를 할당하고 통신할 수 있도록 한다.Docker는 가상 네트워크(브리지)를 통해 각 컨테이너에 고유한 IP를 할당하고, 컨테이너 간의 통신을 관리한다.브리지 네트워크를 통해 컨테이너 간에 직접적인 통신이 가능하며, 외부 네트워크와 통신할 때는 NAT를 사용해 공인 IP와 사설 IP를 변환한다.Docker 네트워크를 사용하면, 각 컨테이너가 독립적인 네트워크 환경에서 동작하면서도 필요한 경우 외부 네트워크와 통신할 수 ..
![[네트워크 이론] NAT와 포트포워딩](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAWwjE%2FbtsN0kbcBPS%2FYOlAMeLx6dJekvsbkwbGBK%2Fimg.png)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.NAT와 포트포워딩NAT이 그림은 NAT(Network Address Translation)을 통해 공인 IP와 사설 IP 간의 통신을 설명하는 구조이다.NAT는 내부 네트워크에서 사용하는 사설 IP 주소를 공인 IP 주소로 변환하여 외부와 통신할 수 있도록 하는 기술이다. NAT 테이블NAT 테이블은 공인 IP와 사설 IP 간의 매핑 정보를 저장하는 역할을 한다. 이 테이블에 따라 외부에서 들어오는 요청이 어떤 사설 IP와 연결될지 결정된다.124.111.46.91:10001 → 192.168.0.4:80: 공인 IP의 10001번 포트로 들어오는 트래픽은 192.168.0.4 서버의 80번 포트(H..
![[Docker] 컨테이너 리소스 사용량 제한](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkxsqo%2FbtsNX24oS1w%2FPNyyvAzCaFuRV7ODlPqg41%2Fimg.webp)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.기업에서는 수평적 확장보다 수직적 확장이 더 효율적인 경우가 많다.성능이 좋은 고사양 서버를 구매하고 이를 도커 컨테이너나 가상화 기술을 통해 논리적으로 여러 대의 서버로 분할하면 되기 때문이다.이는 실제로 물리적 서버를 여러 대 구매하고 관리하는 수평적 확장의 복잡성과 비용을 줄이면서도 유사한 효과를 얻을 수 있는 전략이다. 이때 컨테이너에 리소스 사용량 제한을 두지 않으면 실행되는 컴퓨터의 최대 리소스를 사용하게 된다.이는 하나의 성능이 좋은 컴퓨터를 논리적으로 여러 대의 컴퓨터로 운영하는 도커의 장점을 무색하게 만들 수 있다. 리소스 제한을 설정하지 않은 하나의 컨테이너가 CPU나 메모리를 과도하..