1.5 KiB
1.5 KiB
호스트 JDK 부재 시 Java 암호 로직 교차검증 패턴
bibimbap 호스트엔 JDK 없음(빌드/실행은 Docker 경로). 그래서 생성한 password_hash 등이 실제 Java 코드 경로로 검증되는지를 추정으로 닫지 말고 컨테이너로 실행 증거를 만든다.
패턴
- 검증 대상 로직을 단일 .java 로 복제(예:
UserController.verifyPassword그대로). - JRE-only 이미지(
bibimbap-app:latest)는java File.java소스모드 불가 (jdk.compiler모듈 없음 →InternalError: Module jdk.compiler not in boot Layer). - JDK 이미지로 컴파일+실행:
docker run --rm -v /tmp/HashVerify.java:/tmp/HashVerify.java:ro \ --entrypoint sh eclipse-temurin:21-jdk \ -c 'javac -d /out /tmp/HashVerify.java && java -cp /out HashVerify' - positive + negative 둘 다 확인(올바른 비번=true, 틀린 비번=false). 한쪽만 true 는 불충분.
왜
- self-report("스펙상 맞을 것") 대신 실행 증거로 AC 를 닫음.
- Python
hashlib.pbkdf2_hmac('sha256',...)와 JavaPBKDF2WithHmacSHA256는 byte-identical 이지만, "동일하다"는 가정 자체를 실제 Java 경로 실행으로 검증. - 호스트
timeout명령은 macOS 기본 미존재(gtimeout)./usr/bin/java는 JRE 없는 스텁일 수 있음.
일반화: 호스트에 런타임 없을 때 "추정으로 닫기" 대신 throwaway 컨테이너로 실행 증거 확보. 근거 세션: .atp/work-session/20260618-121419.