[내일배움캠프] 260604 TIL #20

2026. 6. 4. 15:46·내일배움캠프/TIL

코드카타

 

[프로그래머스] 77484번 - 로또의 최고 순위와 최저 순위 [Java]

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 제출한 코드import java.util.List;import java.util.Arrays;class Solution { public int[] solution

sxxlx.tistory.com

 

 

Today I Learned!

모니터링 시스템 및 시큐어 코딩 강의에서 시큐어 코딩 관련 부분을 수강했다.

실습 내용은 아래 깃허브에 올려두었다.

 

GitHub - seola12e/nbc-monitor: 내일배움캠프 [모니터링 시스템 및 시큐어 코딩] 강의 실습

내일배움캠프 [모니터링 시스템 및 시큐어 코딩] 강의 실습. Contribute to seola12e/nbc-monitor development by creating an account on GitHub.

github.com

 

 

정리노트

CORS(Cross-Origin Resource Sharing)

CORS란 한 출처(도메인, 프로토콜, 포트)에서 실행 중인 웹 애플리케이션이 다른 출처의 리소스에 접근할 수 있도록 브라우저에서 제공하는 보안 기능이다. 웹 애플리케이션은 기본적으로 동일 출처 정책(Same-Origin Policy)에 따라 동작하며, 이는 보안상의 이유로 다른 출처의 리소스 접근을 제한한다.

동일 출처 정책은 보안 메커니즘으로, 웹 브라우저가 스크립트가 로드된 출처(origin)와 동일한 출처의 리소스만 접근할 수 있도록 제한한다.

 

CORS 동작 방식은 아래와 같다.

  1. 브라우저가 Preflight 요청을 보냄
  2. 서버가 Preflight 요청에 응답
  3. 브라우저가 응답을 확인

Preflight 요청은 CORS 요청의 일종으로, 브라우저가 실제 요청을 보내기 전에 서버에 요청할 권한이 있는지 확인하는 과정이다.

 

CSRF

CSRF란 웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청을 보내도록 하는 공격 기법으로, 공격자는 사용자가 인증된 상태를 악용하여 사용자가 원하지 않는 행동을 수행하게 만든다.

Refer 헤더 검증, CSRF 토큰 사용, form 대신 API 사용 등의 방식으로 CSRF를 방지할 수 있다.

 

CSRF 토큰을 사용하여 이를 방지하는 실습해보았다.

localhost:8080/csrf 에 접속해서 _csrf 필드가 폼 안에 있음을 확인할 수 있었다.

 

폼의 값을 입력 후 제출했더니 로그에 CSRF 값이 노출되는 것을 확인할 수 있었다.

 

CSRF 토큰 값을 임의로 변경하고 폼을 제출하게 되면 403 페이지로 이동하게 된다.

 

XSS

XSS란 웹 애플리케이션의 취약점을 이용해 악성 스크립트를 다른 사용자의 브라우저에서 실행시키는 공격으로, 이를 통해 공격자는 사용자의 세션을 가로채거나, 악성 코드 실행, 웹사이트 변조 등의 공격을 수행할 수 있다.

 

공격 유형

  • 반사형 XSS (Reflected XSS)
  • 저장형 XSS (Stored XSS)
  • DOM 기반 XSS (DOM-based XSS)

XSS 공격의 위험성

  • 세션 하이재킹: 사용자의 세션 쿠키를 탈취하여 공격자가 사용자의 계정으로 로그인할 수 있음
  • 악성 코드 실행: 악성 스크립트를 실행하여 사용자의 시스템에 피해를 줄 수 있음
  • 피싱 공격: 사용자를 속여 민감한 정보를 입력하도록 유도할 수 있음
  • 웹사이트 변조: 웹페이지의 내용을 변경하여 사용자에게 잘못된 정보를 제공할 수 있음

XSS 방어 기법

  • 입력 검증 및 인코딩
  • Content Security Policy (CSP)
  • HTTPOnly 쿠키 사용
  • JavaScript 안전하게 사용

 

SQL Injection

SQL Injection이란 공격자가 웹 애플리케이션의 데이터베이스 쿼리에 악의적인 SQL 코드를 삽입하여 데이터베이스를 조작하거나 민감한 정보를 탈취하는 공격으로, 이 취약점은 애플리케이션이 사용자 입력을 제대로 검증하지 않을 때 발생한다.

 

SQL Injection의 위험성

  • 데이터 탈취: 공격자가 데이터베이스에서 민감한 정보를 탈취할 수 있음
  • 데이터 변조: 데이터베이스의 데이터를 변경하거나 삭제할 수 있음
  • 권한 상승: 공격자가 데이터베이스 관리자 권한을 얻을 수 있음
  • 전체 시스템 장악: 심각한 경우 서버 전체를 장악할 수 있음

 

SQL Injection 방어 기법

  • Prepared Statements (준비된 문): SQL 쿼리를 미리 컴파일하여 파라미터화된 쿼리를 사용
  • Stored Procedures (저장 프로시저): 데이터베이스에서 미리 정의된 저장 프로시저를 호출하여 실행
  • ORM (객체 관계 매핑): Hibernate 같은 ORM 프레임워크를 사용하여 데이터베이스 접근을 추상화
  • 입력 검증 및 인코딩: 사용자 입력을 철저히 검증하고 인코딩하여 SQL 쿼리에 직접 포함시키지 않음
  • 최소 권한 원칙: 데이터베이스 사용자에게 최소한의 권한만 부여

'내일배움캠프 > TIL' 카테고리의 다른 글

[내일배움캠프] 260602 TIL #19 모니터링 시스템  (0) 2026.06.02
[내일배움캠프] 260521 TIL #18  (0) 2026.05.21
[내일배움캠프] 260520 TIL #17  (0) 2026.05.20
[내일배움캠프] 260512 TIL #16 RabbitMQ  (0) 2026.05.12
[내일배움캠프] 260507 TIL #15 Redis  (0) 2026.05.07
'내일배움캠프/TIL' 카테고리의 다른 글
  • [내일배움캠프] 260602 TIL #19 모니터링 시스템
  • [내일배움캠프] 260521 TIL #18
  • [내일배움캠프] 260520 TIL #17
  • [내일배움캠프] 260512 TIL #16 RabbitMQ
이서라다
이서라다
  • 이서라다
    개발일지
    이서라다
  • 전체
    오늘
    어제
    • 전체 보기 (79)
      • 내일배움캠프 (21)
        • TIL (21)
      • 프로그래머스 (23)
      • Algorithm (2)
      • BackEnd (0)
        • Spring (0)
      • Language (4)
        • JAVA (4)
      • Git (2)
      • 백준 - Java (25)
        • 입출력과 사칙연산 (6)
        • 반복문 (8)
        • 1차원 배열 (1)
        • 문자열 (7)
        • 2차원 배열 (1)
        • 조합론 (1)
        • 정렬 (1)
      • IDE (1)
        • IntelliJ (1)
      • 티스토리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리스킨
    내일배움캠프
    til
    jdk삭제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이서라다
[내일배움캠프] 260604 TIL #20
상단으로

티스토리툴바