데이터베이스에 연결할 때는 안전한 비밀번호를 사용해야 합니다.

데이터베이스 연결에 비밀번호 인증 모드를 사용하는 경우 안전한 비밀번호를 선택해야 합니다. 이 규칙은 빈 비밀번호를 사용할 때 문제를 발생시킵니다. 규칙을 어긴 코드 Flask-SQLAlchemy def configure_app(app): app.config['SQLALCHEMY_DATABASE_URI'] = "postgresql://user:@domain.com" # 규칙을 어긴 코드 Django # settings.py DATABASES = { 'postgresql_db': { 'ENGINE': 'django.db.backends.postgresql', 'NAM...

더보기

XPath 표현식은 인젝션 공격에 취약하지 않아야 합니다.

URL 매개변수와 같이 사용자가 제공한 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 공격자는 오염된 데이터에서 직접 XPath 표현식을 만들면 표현식 자체의 초기 의미를 변경하는 특수하게 조작된 값을 삽입할 수 있습니다. XPath 인젝션 공격에 성공하면 XML 문서에서 민감한 정보를 읽을 수 있습니다. 규칙을 어긴 코드 표준 xml 모듈(xml.etree.ElementTree)은 권장되지 않습니다: xpath 표현식을 제한적으로 지원합니다. 다른 보안상의 이유로 신뢰할 수 없는 XML을 구문 분석하는 경우 매개변수화된 xpath 표현식을 사용할 수 있는 방법이 없습니다. ...

더보기

I/O 함수 호출은 경로 인젝션 공격에 취약하지 않아야 합니다.

URL 매개변수, POST 데이터 페이로드 또는 쿠키와 같이 사용자가 제공한 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 공격자가 오염된 데이터에서 직접 파일 시스템 경로를 구성하면 ‘../’와 같이 특수하게 조작된 값을 삽입하여 초기 경로를 변경하고 액세스 시 사용자가 일반적으로 액세스해서는 안 되는 파일 시스템의 경로로 확인할 수 있습니다. 공격이 성공하면 공격자는 파일 시스템에서 중요한 정보를 읽거나 수정 또는 삭제할 수 있으며, 때로는 임의의 운영 체제 명령을 실행할 수도 있습니다. 이를 흔히 ‘경로 탐색’ 또는 ‘디렉터리 탐색’ 공격이라고 합니다. 방어 전략은 허용된 경로 또는 문자...

더보기

LDAP 쿼리는 인젝션 공격에 취약하지 않아야 합니다.

URL 매개변수와 같은 사용자 제공 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 공격자는 오염된 데이터에서 직접 LDAP 이름이나 검색 필터를 만들면 이름이나 필터 자체의 초기 의미를 변경하는 특수하게 조작된 값을 삽입할 수 있습니다. LDAP 인젝션 공격에 성공하면 디렉토리 서비스에서 중요한 정보를 읽거나 수정 또는 삭제할 수 있습니다. LDAP 이름 내에서 특수 문자 ‘ ‘, ‘#’, ‘”’, ‘+’, ‘,’, ‘;’, ‘<’, ‘>’, ‘' 및 null은 RFC 4514에 따라 백슬래시 문자 ‘'와 이스케이프할 문자의 ASCII 코드에 해당하는 16진수 두 자리로 대체하는 등...

더보기

OS 커맨드는 커맨드 인젝션 공격에 취약하지 않아야 합니다.

운영 체제 명령을 실행하거나 기본 시스템과 상호 작용하는 명령을 실행하는 애플리케이션은 해당 명령에 사용된 외부 제공 값을 무력화해야 합니다. 그렇게 하지 않으면 공격자가 의도하지 않은 명령을 실행하거나 민감한 데이터를 노출하는 입력을 포함할 수 있습니다. 이 문제는 다음 중 한 가지 방법으로 완화할 수 있습니다: shell=true 없이 subprocess 모듈 사용. 이 경우 서브프로세스는 명령과 인수가 명확하게 구분된 배열을 기대합니다. shlex.quote로 셸 인자 치환 규칙을 어긴 코드 os from flask import request import os @app.route('/pin...

더보기

HTTP 요청 리디렉션은 위조 공격에 노출되어서는 안됩니다.

URL 매개변수, POST 데이터 페이로드 또는 쿠키와 같은 사용자 제공 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주되어야 합니다. 오염된 데이터를 기반으로 HTTP 리디렉션을 수행하는 애플리케이션은 공격자가 사용자를 악성 사이트로 리디렉션하여 로그인 자격 증명을 탈취하는 등의 작업을 수행할 수 있습니다. 이 문제는 다음와 같은 방법으로 완화될 수 있습니다. 허용 목록에 따라 사용자가 제공한 데이터의 유효성을 검사하고 일치하지 않는 입력은 거부합니다. 사용자 제공 데이터를 기반으로 리디렉션을 수행하지 않도록 애플리케이션을 재설계합니다. 규칙을 어긴 코드 Flask from flask impo...

더보기

역직렬화는 인젝션 공격에 취약하지 않아야 합니다.

URL 매개변수, POST 데이터 페이로드 또는 쿠키와 같은 사용자가 제공한 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 사용자가 제공한 데이터를 기반으로 역직렬화하면 두 가지 유형의 공격이 발생할 수 있습니다: 원격 코드 실행 공격: 직렬화된 데이터의 구조를 변경하여 직렬화되지 않은 객체의 동작을 수정하는 공격입니다. 매개변수 변조 공격: 권한을 상승시키거나 제품의 수량이나 가격 등을 변경하기 위해 데이터를 수정하는 공격입니다. 역직렬화 공격으로부터 보호하는 가장 좋은 방법은 애플리케이션에서 역직렬화 메커니즘의 사용에 이의를 제기하는 것입니다. 역직렬화 메커니즘의 사용이 정당화되지 ...

더보기

HTTP 요청 리디렉션은 위조 공격에 노출되어서는 안됩니다.

URL 매개변수, POST 데이터 페이로드 또는 쿠키와 같은 사용자 제공 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 또한 웹 서버는 HTTP 요청을 처리할 때 사용자가 제공한 데이터를 사용자에게 다시 전송되는 HTTP 응답 본문으로 복사할 수 있습니다. 이러한 동작을 “리플렉션”이라고 합니다. 오염된 데이터를 반영하는 엔드포인트를 통해 공격자는 결국 사용자의 브라우저에서 실행될 코드를 삽입할 수 있습니다. 이를 통해 민감한 정보에 액세스/수정하거나 다른 사용자를 사칭하는 등 다양하고 심각한 공격이 가능해질 수 있습니다. 일반적으로 해결책은 다음 중 하나입니다: 화이트리스트를 기반으...

더보기