하드코딩된 계정 정보
Use of Hardcoded Credentials
설명
하드코딩된 자격 증명(Use of Hardcoded Credentials)은 애플리케이션에 자격 증명(예: 사용자 이름, 비밀번호, API 키 등)을 소스 코드에 직접 포함하는 취약성입니다. 이는 소스 코드가 유출될 경우 심각한 보안 위험을 초래할 수 있습니다.
잠재적 영향
자격 증명 노출: 하드코딩된 자격 증명이 유출되어 공격자가 시스템에 무단으로 접근할 수 있습니다.
권한 상승: 공격자가 관리자 권한을 획득하여 시스템을 조작하거나 손상시킬 수 있습니다.
데이터 유출: 민감한 데이터가 공격자에게 노출될 수 있습니다.
해결 방법
환경 변수 사용: 자격 증명을 소스 코드에 하드코딩하지 않고 환경 변수로 설정합니다.
보안 저장소 사용: 자격 증명을 안전하게 저장하고 관리할 수 있는 보안 저장소를 사용합니다.
자격 증명 관리: 주기적으로 자격 증명을 변경하고, 사용되지 않는 자격 증명은 폐기합니다.
취약한 코드 및 안전한 코드 예시
Unsafe Django code & Safe Django code
# Unsafe Django code
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}설명:
취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.
안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.
Unsafe Flask code & Safe Flask code
설명:
취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.
안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.
Unsafe FastAPI code & Safe FastAPI code
설명:
취약한 코드: 데이터베이스 자격 증명을 소스 코드에 하드코딩하여, 자격 증명이 유출될 위험이 있습니다.
안전한 코드: 환경 변수를 사용하여 자격 증명을 설정하고, 소스 코드에 하드코딩하지 않습니다.
참조
Last updated