정적으로 저장된 코드에서 명령어의 부적절한 중화
Improper Neutralization of Directives in Statically Saved Code
설명
정적으로 저장된 코드에서 명령어의 부적절한 중화는 사용자가 입력한 값이 그대로 코드나 스크립트에 포함될 때 발생하는 취약성입니다. 공격자는 이러한 취약점을 악용하여 악성 명령어를 삽입하고 실행시킬 수 있습니다. 이는 특히 웹 애플리케이션에서 사용자 입력을 포함한 HTML, JavaScript, SQL 등 다양한 코드가 저장될 때 위험합니다.
잠재적 영향
코드 실행: 악의적인 코드를 삽입하여 시스템 권한을 획득할 수 있습니다.
데이터 유출: 민감한 데이터가 공격자에게 노출될 수 있습니다.
XSS (크로스 사이트 스크립팅): 악성 스크립트가 삽입되어 다른 사용자의 브라우저에서 실행될 수 있습니다.
데이터 손상: 데이터베이스를 조작하거나 손상시킬 수 있습니다.
해결 방법
입력값 검증: 사용자의 모든 입력값을 철저히 검증합니다.
출력값 인코딩: 사용자 입력값을 HTML, JavaScript, SQL 등에 출력할 때 적절히 인코딩합니다.
보안 라이브러리 사용: Django, Flask, FastAPI 등과 같은 프레임워크에서 제공하는 보안 기능을 사용합니다.
준비된 쿼리(Prepared Statements) 사용: SQL 쿼리를 실행할 때, 사용자 입력값을 직접 포함하지 않고 바인딩 변수를 사용합니다.
취약한 코드 및 안전한 코드 예시
Unsafe Django code & Safe Django code
설명:
취약한 코드: 사용자 입력값을 검증하지 않고 HTML 템플릿에 포함하여, 악성 스크립트가 실행될 수 있습니다.
안전한 코드:
escape함수를 사용하여 사용자 입력값을 HTML로 출력하기 전에 인코딩하여, 악성 스크립트 실행을 방지합니다.
Unsafe Flask code & Safe Flask code
설명:
취약한 코드: 사용자 입력값을 검증하지 않고 HTML 템플릿에 포함하여, 악성 스크립트가 실행될 수 있습니다.
안전한 코드:
escape함수를 사용하여 사용자 입력값을 HTML로 출력하기 전에 인코딩하여, 악성 스크립트 실행을 방지합니다.
Unsafe FastAPI code & Safe FastAPI code
설명:
취약한 코드: 사용자 입력값을 검증하지 않고 HTML 템플릿에 포함하여, 악성 스크립트가 실행될 수 있습니다.
안전한 코드:
escape함수를 사용하여 사용자 입력값을 HTML로 출력하기 전에 인코딩하여, 악성 스크립트 실행을 방지합니다.
참조
Last updated