설명
암호화 키를 소스 코드 상수나 문자열 인자로 저장하면 키 회전과 비밀 관리가 어렵고 코드 유출 시 암호 보호가 무력화됩니다.
잠재적 영향
저장 데이터 복호화, 토큰 위조, 메시지 변조가 가능합니다.
해결 방법
키는 KMS 또는 Secret Manager에서 로드하고, 환경별로 분리하며 주기적으로 회전합니다.
예시
변경 전
php
<?php
// 클래스 내부 멤버 예시
private const ENCRYPTION_KEY = "Paintbrush";
변경 후
php
<?php
$key = getenv('ENCRYPTION_KEY');
설명:
- 변경 전: 암호화 키가 소스 코드에 직접 저장되어 있습니다.
- 변경 후: 배포 환경이 공급한 키를 환경 변수에서 읽습니다. 키가 없거나 형식이 잘못되면 처리를 중단하고, 환경 변수와 공급 경로의 접근 권한도 제한해야 합니다.