하드코딩 (Hardcoding)
이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 하드코딩 (Hardcoding)의 뜻과 쓰임을 중급 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
하드코딩(Hardcoding)은 입력이나 외부 설정으로 바꿀 값을 프로그램 코드 안에 직접 고정하는 작성 방식입니다. 유지보수 문제와 비밀정보 노출 위험은 고정한 값의 성격에 따라 다릅니다. 서버 주소, 파일 경로, 계정 정보 등을 소스에 넣는 경우가 여기에 해당합니다. 고정값을 바꾸려면 코드 수정과 재배포가 필요할 수 있습니다.
바뀔 값을 코드에 고정하는 방식
개발용 서버 주소를 함수 안에 직접 적으면 그 함수는 정해진 서버에 요청을 보냅니다. 같은 코드를 운영 환경으로 옮겨도 주소가 그대로라면 개발 서버를 계속 사용할 수 있습니다. 값을 실행 시점의 설정으로 받을지, 배포할 코드에 포함할지는 운영 방식의 선택입니다. 환경에 따라 달라져야 할 값을 여러 파일에 흩어 놓으면 바꿀 위치를 놓치기 쉽습니다.
MITRE의 보안 관련 고정 상수 항목 CWE-547은 설명되지 않은 보안 관련 상수가 설계 결정을 이해하기 어렵게 만드는 문제를 다룹니다. 숫자 하나만 남아 있으면 그것이 최대 입력 길이인지 재시도 제한인지 알기 어렵습니다. 이름과 이유를 붙이면 의미를 읽기 쉬워지지만, 값이 코드에 고정돼 있다는 배치 방식까지 바뀌는 것은 아닙니다.
계산에 쓰는 변하지 않는 수학 상수와 서비스 운영 중 바꾸어야 할 설정을 구분합니다. 모든 숫자와 문자열을 외부 파일로 옮기면 설정의 종류와 검증 부담이 늘어날 수도 있습니다. 고정값의 존재만으로 결함을 판정하기보다 누가 언제 바꾸는 값인지, 잘못 바뀌면 어떤 동작에 영향을 주는지 살펴봅니다. 여러 환경에서 같은 값을 유지해야 하는 경우에는 코드에 둔 이유가 있을 수 있습니다.
계정 정보가 고정될 때의 위험
MITRE의 고정 자격 증명 항목 CWE-798은 비밀번호나 암호화 키를 제품 안에 고정해 넣는 취약점을 설명합니다. 제품으로 들어오는 사용자를 고정 비밀번호로 검사하는 경우와, 제품이 다른 서비스에 연결할 때 고정 자격 증명을 사용하는 경우를 구분합니다. 외부 API 키를 소스에 적어 두는 문제는 단순히 값을 바꾸기 어렵다는 점을 넘어 접근 권한의 노출과 연결됩니다.
소스 저장소에 키가 들어가면 파일을 읽을 수 있는 사람이나 도구도 그 값을 볼 수 있습니다. 클라이언트에 전달되는 코드에 넣었다면 최종 이용자에게 배포되는 결과물도 노출 경로가 됩니다. 변수 이름을 짧게 바꾸거나 문자열을 몇 조각으로 나누어도 같은 실행 결과물에 필요한 정보가 모두 있다면 비밀 관리의 경계가 생기지는 않습니다.
키를 소스 밖으로 옮길 때는 보관 위치의 접근 권한도 함께 정합니다. CWE-798은 외부 설정이나 데이터베이스에 자격 증명을 보관하더라도 접근을 제한하고 보호할 것을 설명합니다. 환경변수나 비밀 관리 도구는 값을 전달하는 수단이며, 로그에 출력하거나 다른 프로세스에 넓게 넘기는 문제까지 자동으로 해결하지는 않습니다. 코드에서 지운 것과 이미 배포된 키를 폐기하는 작업도 구분됩니다.
설정 분리와 실제 동작 확인
설정을 분리한 뒤에는 값이 없거나 형식이 틀린 경우의 동작을 정합니다. 주소가 비어 있을 때 임의의 기본 서버에 연결하는 코드라면 누락된 설정을 발견하기 어려울 수 있습니다. 필수 값은 실행 초기에 확인하고, 비밀값 자체를 출력하지 않으면서 어떤 설정이 빠졌는지 설명하면 운영자가 실패 원인을 찾기 쉽습니다. 설정 이름과 실제 코드에서 읽는 이름도 일치해야 합니다.
같은 값이 여러 곳에 중복돼 있으면 한곳만 고쳐도 일부 요청은 옛 대상을 계속 사용할 수 있습니다. 설정을 읽는 진입점을 모으고 호출하는 쪽에 값을 전달하면 변경 경로를 추적하기 쉬워집니다. 시험에서는 개발용과 운영용 입력을 분리해 대상 서버나 출력 위치가 기대한 값인지 확인합니다. 이 확인은 설정 파일이 존재한다는 검사와 다른 단계입니다.
AI가 만든 예제에서 주소나 경로를 그대로 가져왔을 때도 실제 프로젝트의 입력인지 살펴봅니다. SDK 초기화에 넣는 값, 함수 안의 예외 처리, 시험용 계정이 배포 코드에 남은 지점이 검토 대상입니다. 고정값을 지웠다는 변경 기록과 환경별 실행 결과를 함께 남기면 어느 설정을 바꾸었고 어떤 요청에 적용됐는지 나중에 확인할 수 있습니다.
관련 용어
하드코딩 (Hardcoding)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
