✏️ Java 코드 에디터
취약한 코드
import java.io.FileOutputStream;
import java.util.Properties;
public class ConfigSaver {
// Encryptor 유틸리티 클래스가 있다고 가정
// 사용법: Encryptor.encrypt(String text)
public void saveConfig(String password) throws Exception {
Properties prop = new Properties();
prop.setProperty("db.user", "admin");
// [취약점] 중요 정보(비밀번호)를 암호화하지 않고 평문으로 저장
// 공격자가 파일을 획득하면 비밀번호가 즉시 노출됩니다.
prop.setProperty("db.password", password);
prop.store(new FileOutputStream("database.properties"), null);
}
}
💡 수정 가이드
1. 암호화 적용
비밀번호 문자열을 암호화 유틸리티를 통해 암호화합니다.
String encrypted = Encryptor.encrypt(password);
2. 암호문 저장
평문 password 대신 암호화된 문자열을 저장합니다.
prop.setProperty("db.password", encrypted);
📊 분석 결과 및 설명
🎯 목표
설정 파일이나 데이터베이스에 비밀번호, 주민번호 등 중요 정보를 저장할 때는 반드시 암호화하여 저장해야 합니다. 현재 평문으로 저장되는 로직을 수정하세요.
⚠️ 현재 취약점
Cleartext Storage
prop.setProperty("db.password", password) 코드는 비밀번호를 그대로 파일에 씁니다. 서버 침해 사고 발생 시 정보 유출의 직접적인 원인이 됩니다.