프로젝트로 배운 공부/개인 프로젝트

API 키가 노출되면 안 되는 이유

콛 다이어리 2024. 11. 19. 00:20

오늘 하려고 했던 일은

사용자가 검색 텍스트 박스에 검색을 하면

검색어를 포함되는 데이터를 출력하는 로직을

짜려던 일이었다.

 

뮤지컬과 연극 사이트에 접속한 뒤,

개발자 도구를 누르면 내 API를 볼 수 있다고 해서

들어가봤는데 볼 수가 없어서 튜터님께 갔다.

내가 완전히 잘못 알고 있었다..

 

API 키는

그 서버를 사용할 수 있는 사람들에게만 주는 것이고

가지고있으면 그 서버를 제어할 수 있는 것이다.

 

내가 api키를 받고 나서 .env파일에 api키를

넣었는데 왜 api키를 숨기는지 궁금했다.

 

전에 팀플 할 때에도 튜터님들이랑 팀원들이

api키 숨기라고 했고, 며칠 전에는

같이 공부하는 분이 api가 .env파일에 있지 않아서

남들이 보게돼면 깃에 올라가지지 않지 않냐고

물어보시기도 했다..

 

마침 질문이 생겼다.

api키도 기존에 만들었던 수파베이스 api와 anon키가 있는

.env파일에 같이 넣어도 되는지, 아니면 새로운 .env파일을

만들어야 하는지 질문하러 가는김에 api키에 대해서 여쭤보았다.

 

이런 key들은 그냥 .env파일에 같이 넣어두고

.gitignore파일에 .env라고 입력해주면 된다.

그러면 git에 올라가지 않는다고 했다. (진짜 올라가지 않았다.)

 

API키는

데이터 요청이 허가된 사용자만 서버를 이용하게 하고,

서버 요청의 출처를 확인하고, API 사용량을 추적한다.

 

 

노출되면 발생되는 문제

1. 키 악용 및 서비스 남용시킬 수 있다.

API를 아는 누군가가 API 요청 제한(쿼터)을 초과시키거나,

대량의 요청을 보내 서비스 요금을 발생시키거나,

만든 시스템과 관계없는 데이터 요청에 키가 사용될 수 있음

 

2. 데이터 유출을 초래할 수 있다.

사용자 정보나금융 데이터 등이 포함된 API의 경우,

피해는 더욱 심각할 것임

 

3. 서비스 차단 및 비정상 동작

키가 남용되면 API 제공자는 키를 차단할 수 있는데

이로 인해,

본래 애플리케이션에서 API를 사용할 수 없게 되어

서비스가 정상적으로 동작하지 않게 됨

 

 

방지해야 하는 이유

1. 비용 발생

API 요청이 요금 기반일 경우,

키가 노출되면 불필요한 비용이 발생 가능

 

2. 서비스 중단

키가 남용되어 차단되면,

애플리케이션의 중요한 기능이 중단될 가능성 있음

 

3. 보안 침해

데이터를 가져오는 API의 경우,

민감한 정보가 유출될 수 있어 보안 위험이 높음

 

4. 신뢰도 하락

API 키 유출로 인한 문제는

사용자나 고객에게 부정적인 인식을 줄 수 있음

 

 

하지만... 아주 만약... 노출이 됐다면...???

 

1. 즉시 API 키 폐기

API 제공자의 관리 콘솔에서

기존 키를 비활성화하거나 폐기

 

2. 새로운 키 발급

새 API 키를 생성하고,

코드에서 기존 키를 새로운 키로 대체

 

3. 재발 방지 조치

환경 변수 사용, gitignore 설정 등 보안 조치를 강화