728x90
[HTTP 보안]sanitize
HTTP 보안 기법 중 하나인 **sanitize(입력값 정화)**는, 사용자가 제공한 입력 데이터를 검증하고 정리하여 웹 애플리케이션이 이를 안전하게 처리할 수 있도록 하는 보안 기법입니다. 이는 주로 SQL 인젝션, 크로스 사이트 스크립팅(XSS), 경로 조작 등 다양한 공격 벡터로부터 애플리케이션을 보호하기 위해 사용됩니다.
Sanitize의 주요 목적
- 사용자 입력에 포함될 수 있는 악성 코드나 예상치 못한 데이터를 제거하거나 수정.
- 애플리케이션에서 사용되는 데이터의 무결성과 보안을 유지.
- 악성 입력값을 사용하여 시스템을 공격하는 것을 방지.
Sanitize가 적용되는 주요 영역
- HTML 및 JavaScript (XSS 방지)
- HTML 코드나 JavaScript 코드에서 악성 스크립트 실행을 방지하기 위해 <, >, & 등의 특수 문자를 이스케이프 처리합니다.
- 예: <script> → <script>
- SQL 쿼리 (SQL 인젝션 방지)
- SQL 명령어에 직접적으로 사용자의 입력값이 포함될 때, 입력값에 포함된 악성 SQL 명령어를 제거하거나 이스케이프 처리합니다.
- 예: ' OR '1'='1 같은 입력값이 쿼리에 삽입되지 않도록 조치.
- 파일 및 경로 입력
- 파일 업로드나 다운로드와 관련된 입력값에서 디렉터리 트래버설 공격(예: ../../etc/passwd)을 방지하기 위해 입력값을 정화.
- JSON 및 API 데이터
- 외부에서 제공되는 JSON 데이터 또는 API 입력값을 검증하고 허용된 데이터만 처리.
Sanitize의 주요 방법
- 화이트리스트 기반 검증
- 입력값이 사전에 정의된 허용 규칙(예: 특정 문자 세트나 패턴)에 부합하는지 확인.
- 예: 이메일 입력값 → 정규식을 사용해 이메일 포맷만 허용.
- 특수 문자 이스케이프(Escape)
- 사용자가 제공한 입력값에서 악의적인 코드나 명령어를 무력화하기 위해 특수 문자를 이스케이프 처리.
- 예: &, <, > → &, <, >
- HTML 정화 라이브러리 사용
- XSS 공격을 방지하기 위해 HTMLSanitizer와 같은 도구를 활용하여 입력값을 클린업.
- 예: OWASP의 Java HTML Sanitizer.
- SQL 쿼리에서 Prepared Statements 사용
- SQL 인젝션을 방지하기 위해 쿼리를 작성할 때 사용자 입력값을 동적으로 삽입하지 않고, Prepared Statements와 같은 안전한 쿼리 작성을 활용.
Sanitize의 한계
- 완벽한 보안 기법은 아니며, 다른 보안 기법(예: 입력 검증, 인증, 권한 관리 등)과 함께 사용해야 효과적입니다.
- 잘못 설정된 규칙으로 인해 정당한 사용자 입력이 거부될 수 있음.
결론
Sanitize는 사용자 입력값을 검증하고 정리함으로써 웹 애플리케이션의 보안을 강화하는 핵심적인 보안 기법입니다. 특히 동적 웹 환경에서 SQL 인젝션, XSS와 같은 일반적인 웹 공격을 효과적으로 방지하는 데 중요한 역할을 합니다.
728x90
'프론트엔드 > HTTP' 카테고리의 다른 글
[HTTP 보안]CSP vs SOP (0) | 2024.12.29 |
---|---|
[HTTP 보안]escape (0) | 2024.12.29 |
[HTTP 기본]curl (1) | 2024.12.28 |
[HTTP 추가 프로토콜]WebSocket (3) | 2024.12.28 |
[HTTP 추가 프로토콜]Server-Sent Events(SSE) (0) | 2024.12.28 |