open api 강의를 듣고, open api 찾아서 간단한 앱을 만들어 보려고 하는데, api key가 있더라구요. 그래서 회원가입을 하고 키를 발급받은 후 fetch 를 통해서 데이터를 받아와서 만들긴 했는데, 갑자기 이 생각이들더라구요. api key는 은닉이 되어야 하는게 맞지 않나? 라는거요
(사실 리액트 ,뷰 같은 라이브러리 혹은 프레임워크를 사용하면 배운대로 자연스레 하는 것이지만, 자바스크립트 자체적으로 건드려 본 적은 없다는 사실을 깨달았어요.).
그 후 은닉을 어떻게 하면 할 수 있는가 찾아봤는데, 서버 측에서 가능한 dotenv 를 다운 받아서 쓰거나 아니면 무료로 도메인을 등록해주는 사이트 자체의 옵션을 건드려서 하는 방법(서버리스?)은 있는데, 순수 자바스크립트 자체적으로 하는 방법은 안 보이더라구요.
결론적으로 순수 자바스크립트 자체만으로 , 발급 받은 api key를 은닉할 수는 없는 걸까요?
안녕하세요 운동하자님 ㅎㅎ
요청할 때 api key를 쿠키든, 어떠한 헤더값에 넣어서 보냈을 때
그것을 "은닉"하는 방법을 말씀하시는 건가요?
네 100% 은닉하는 방법은 없습니다.
물론 POST를 쓰고, HTTPS를 써서 어느정도는 보안에 힘을 쓰는 방법은 있지만 공격자가 패킷분석을 하게 되면 당연히 쿠키나 헤더에 있는 키는 볼 수 있습니다. 그래서 우리가 탈취 당했을 때 valid가 잘 안되도록 노력해야 합니다. 이부분은 참고로 토큰 기반 인증방식에서 더 배웁니다.
또한 첨언을 하자면요. ㅎㅎ
서버 측에서 가능한 dotenv 를 다운 받아서 쓰거나
>> 이거는 github에 key를 올려두었을 때 탈취를 안당하기 위해서 하는 것이지 dotenv를 통해 로컬 서버에 있는 값을 기반으로 한다고 해서 "요청"할 떄의 키를 은닉하는 것과는 상관없습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
답글
공부하자
2023.02.15감사합니다 많은 도움이 되었습니다~