# 웹사이트 코드에 있는 비밀 키

사이트의 공개 코드에 들어간 비밀번호나 키를 누구나 읽을 수 있는 이유, 그리고 그런 일이 생겼을 때 무엇을 해야 하는지 설명합니다.

웹사이트의 코드는 방문자의 브라우저에서 실행되므로, 방문자의 브라우저가 그 코드를 내려받아야 합니다. 누구나 그것을 열어서 읽을 수 있습니다.

대부분의 코드에서는 괜찮습니다. 하지만 결제 계정, 데이터베이스, AI 서비스의 키 같은 **비밀 값**이 그 안에 들어가면 문제가 됩니다.

## 어떻게 생기나요

일부러 넣는 경우는 거의 없습니다. 테스트하면서 키를 붙여 넣고 그대로 지우지 않기도 합니다. 서버용 설정을 실수로 공개로 표시하기도 합니다. 빌드 도구가 실제 사이트와 함께 **소스 맵**, 즉 읽기 쉬운 형태의 코드를 게시하기도 합니다.

공격자는 수백만 개의 사이트에서 이런 키를 자동으로 찾습니다. 유출된 키는 몇 시간 안에 요금을 청구하거나, 고객 데이터를 읽거나, 내 이름으로 이메일을 보낼 수 있습니다.

## 스캔이 하나를 찾았을 때 할 일

1. **이미 사용된 것으로 간주하세요.** 지금 지우더라도 누군가 이미 가지고 있을 수 있습니다.
2. **교체하세요.** 키를 발급한 서비스에서 새 키를 만들고, 예전 키는 삭제하세요.
3. **서버로 옮기세요.** 키는 서버 설정에 있어야 하며, 브라우저에서 실행되는 코드에는 절대 두지 마세요.
4. **그 서비스의 요금과 로그를 확인하세요.** 내가 하지 않은 일이 있는지 살펴보세요.

일부 키는 공개되도록 설계되어 있습니다. 예를 들어 결제 양식 키는 결제 절차만 시작할 수 있습니다. 스캔은 어떤 종류의 키를 찾았는지, 그리고 그 판단이 얼마나 확실한지 알려 줍니다.

> **Careful**
>
> 코드에서 키를 지우는 것보다 키를 교체하는 것이 더 중요합니다. 지우기만 하면 새로운 복사본이 생기는 것만 막을 수 있습니다.

> **Try it**
>
> [수정할 항목](/app/findings)을 열고 키나 비밀 값에 관한 내용을 찾아보세요.