[네트워크] CORS, XXS, SQL injection

CJY·2023년 8월 24일
0

네트워크

목록 보기
10/11

SOP와 CORS

SOP(Same-Origin Policy)와 CORS(Cross-Origin Resource Sharing)는 웹 브라우저에서 웹 페이지 간의 보안 및 데이터 공유를 제어하기 위한 메커니즘입니다. 이들은 웹 애플리케이션의 보안을 강화하고 다른 도메인 간의 데이터 교환을 안전하게 조절하기 위해 사용됩니다.

SOP (Same-Origin Policy)

  • SOP는 웹 브라우저에서 실행되는 스크립트나 리소스가 다른 출처(Origin)로부터 온 데이터와 상호 작용하는 것을 제한하는 보안 정책입니다.
  • 출처란 프로토콜, 호스트, 포트가 동일한 경우를 말합니다.
  • SOP는 기본적으로 웹 페이지에서 같은 출처의 리소스만 접근 가능하도록 하여, 악의적인 코드로 인한 보안 위협을 줄입니다.
  • 만약 다른 출처의 리소스에 접근해야 할 경우, CORS 메커니즘을 사용하여 제한적으로 허용할 수 있습니다.

CORS (Cross-Origin Resource Sharing)

  • CORS는 SOP를 우회하여 다른 출처로부터의 리소스 요청을 허용하는 메커니즘입니다.
  • 웹 페이지가 다른 출처의 서버로 리소스 요청을 보낼 때, 해당 서버가 허용하는 출처에 대해서만 리소스 접근을 허용합니다.
  • 서버는 응답 헤더에 CORS 관련 정보를 포함하여 브라우저에게 요청한 출처에 대한 접근을 허용하는지 여부를 알려줍니다.
  • 이를 통해 보안적인 제어를 유지하면서 필요한 데이터 공유를 허용할 수 있습니다.

정리

CORS는 웹 애플리케이션에서 다른 출처로의 데이터 요청이 필요한 경우에 중요한 역할을 합니다. 이를 통해 브라우저에서 악의적인 도메인으로부터의 공격을 방지하고, 안전하게 데이터를 공유하거나 통신할 수 있습니다. CORS 설정은 웹 서버에서 관리되며, 브라우저와 서버 간의 통신을 보다 안전하고 효율적으로 관리할 수 있도록 도와줍니다.

XXS 공격

XXS(Cross-Site Scripting) 공격은 웹 응용 프로그램에서 발생하는 보안 취약점 중 하나로, 공격자가 악의적인 스크립트를 삽입하여 사용자의 브라우저에서 실행되게 만들어, 사용자 정보를 탈취하거나 다른 악의적인 행위를 수행할 수 있는 공격입니다.

종류

  • Reflected XSS
    공격자가 생성한 악의적인 스크립트가 서버로 보내지고, 서버는 이를 사용자의 브라우저로 리다이렉트하여 실행하는 형태입니다.

  • Stored XSS
    악의적인 스크립트가 서버에 저장되어 있는 경우, 해당 스크립트가 다른 사용자에게 표시되어 실행될 수 있는 형태입니다.

  • DOM-based XSS
    공격자가 웹 페이지의 동적 요소(DOM)를 조작하여 악의적인 스크립트를 실행시키는 형태입니다.

예방 조치

  • 입력 검증 및 필터링:
    사용자 입력 데이터를 받을 때, 서버 측에서 입력 값을 검증하고 허용되지 않는 문자열이나 스크립트가 포함되지 않도록 필터링합니다.

  • 출력 인코딩:
    사용자 입력 데이터를 웹 페이지에 표시할 때, 적절한 출력 인코딩을 사용하여 스크립트가 실행되지 않도록 합니다.

  • HTTP 헤더 설정:
    웹 사이트는 적절한 Content Security Policy (CSP) 헤더를 설정하여 허용된 리소스 및 스크립트만 실행되도록 제한할 수 있습니다.

  • 세션 관리:
    세션 쿠키를 보호하고, HTTPS 프로토콜을 사용하여 데이터를 암호화하여 중간자 공격을 예방합니다.

  • 웹 방화벽 및 보안 솔루션 사용:
    웹 방화벽이나 보안 솔루션을 사용하여 악의적인 요청을 차단하고 보안을 강화할 수 있습니다.

  • 최신 버전 및 패치 사용:
    웹 프레임워크, 라이브러리, 서버 소프트웨어 등을 최신 버전으로 유지하고 보안 패치를 적용하여 취약점을 해결합니다.

정리

XXS 공격은 웹 응용 프로그램 보안의 중요한 측면 중 하나이며, 적절한 보안 조치와 개발 방법을 채택하여 공격을 예방하고 사용자 정보를 보호해야 합니다.

SQL injection

SQL Injection은 웹 응용 프로그램에서 발생하는 보안 취약점 중 하나로, 악의적인 사용자가 입력 폼 등을 통해 SQL 쿼리를 조작하여 데이터베이스에 접근하거나 조작하는 공격입니다. 이로 인해 데이터 유출, 데이터베이스 손상, 불법 데이터 수정 등의 문제가 발생할 수 있습니다.

특징

  • 입력 값 조작:
    사용자가 입력하는 값에 SQL 쿼리를 삽입하여 악의적인 작업을 수행합니다.

  • 쿼리 조작:
    공격자는 쿼리 조건을 바꿔 데이터베이스를 조작하거나 정보를 탈취합니다.

  • 데이터 유출:
    공격자는 민감한 데이터를 유출하거나 조회할 수 있습니다.

예방 조치

  • Prepared Statements (Parameterized Queries):
    사용자 입력 값을 바로 SQL 쿼리에 삽입하지 말고, Prepared Statements를 사용하여 입력 값을 매개 변수로 대체합니다. 이는 입력 값이 쿼리로 해석되지 않도록 방지합니다.

  • ORM 사용:
    객체-관계 매핑(ORM) 라이브러리를 사용하여 SQL 쿼리를 직접 작성하지 않고, ORM을 통해 데이터베이스와 상호 작용합니다. ORM은 SQL Injection을 막을 수 있는 방법 중 하나입니다.

  • 입력 검증 및 정제:
    입력 받은 데이터를 검증하고, 필요한 경우 정제하여 악의적인 코드를 제거하거나 변환합니다.

  • 제한된 권한:
    데이터베이스 사용자 계정은 최소한의 권한만 가지도록 설정하여, 공격자가 데이터베이스를 조작하거나 수정하는 데 제한을 둡니다.

  • 에러 메시지 숨기기:
    에러 메시지를 노출하지 않거나 일반적인 메시지만 표시하여 공격자가 데이터베이스 구조나 정보를 파악하는 것을 어렵게 만듭니다.

  • 보안 패치 및 업데이트:
    사용하는 데이터베이스 시스템과 관련 소프트웨어를 최신 버전으로 유지하고, 보안 패치를 적용하여 알려진 취약점을 보완합니다.

정리

SQL Injection은 중요한 보안 위협으로, 올바른 개발 관행과 보안 조치를 통해 방어해야 합니다.

profile
열심히 성장 중인 백엔드

0개의 댓글