로그인 없을때 API 엔드포인트 보안 방법에 대한 연구 정보
로그인 없을때 API 엔드포인트 보안 방법에 대한 연구본문
로그인이 없는 맵 서비스를 개발중입니다.
자바스크립트로 API 서버를 호출 할 경우 여러가지 공격에 노출될 수 있습니다.
어떤 방식으로 보안을 할까 열심히 GPT와 입씨름을 한 결과
다음과 같은 방식이 좋겠다고 생각이 드는데 어떤가요?
(일단 정리겸 기록 용으로 남깁니다. 까먹을것 같아서 ㅎㅎ)
[적용 고려]
- JWT를 이용한 토큰 발급 및 검증 (서버에 상태를 저장하지 않기 때문에 서버비 절감)
- HTTP Only 쿠키 설정을 통해 XSS공격 방지 및 토큰 노출 방지
- 토큰 만료시간 (1시간 미만)
- 기본적인 WAF On
[의미 없을것 같아서 폐기]
- Endpoint를 VPC-Link를 통해 내부에 둠으로써 외부접근 불가 (어차피 퍼블릭 필요함)
- Lambda@Edge를 통한 토큰 검증 및 서비스 호출 (어차피 해야 하는일)
- 커스텀 헤더
보안은 다중 구성으로 하는것도 좋은데 속도가 느려질것 같고
일단 심플하게 구성하는것이 좋을것 같습니다.
1
댓글 13개
이해는 잘 안되지만 추천 먼저 드립니다.
@리자 감사합니다.
캐싱.....
@미니님a 네 캐싱은 기본으로다가..^^
@똥싼너구리 근데 jwt가 없는 엔드 포인트는 사실상 방법이 없...다 생각하는 1인..
뭐 호출하는 시간 + 속도 그래봐야..0.000 단위니깐 뭐 크게 신경쓸 ....
지금 호출하는 api가 어마어마하게 많아서 헤갈립니다 하하하하하!!
@미니님a
또 고민이 되는게 서비스 진입시 jwt 토큰을 발행하고 api 호출시 실어서 보내려고 하는데
로그인이 없기 때문에
서비스 진입시 토큰을 발급하는 로직을 누군가 알아내서
토큰을 계속 발급하면서 api를 호출할 수 있지 않을까 생각이 드네요
이것에 대한 보안 방법이 있을까도 고민됩니다.
제 생각에는 API 만 제공한다면 api 키가 있는지만 확인하면될거고요
그게아니라 프론트페이지에서 제공하면
cors 체크랑 http only + jwt 로 충분하지 않을까요.
계속 호출하는건 초당 api 제한같은걸 두는 수밖에 없어보이네요
@마르산 불특정 다수 서비스이고 클라이언트는
html+CSS+JS 만으로 개발되기 때문에 API Key는 의미가 없을것 같습니다.
저도 cors 체크랑 http only + jwt 이정도면 충분하다 생각은 하지만
공격 포인트를 생각하다보니 토큰 생성에서 조금 민감하게 생각이 드네요^^
실제 서비스는 이정도만 해도 충분한데
연구를 하는 입장에서 한번 생각해볼 문제인것 같아서요 ㅎㅎ
@똥싼너구리
1. 외부 호출 제한 걸기
2. 로직을 수시로 바꾸기(?)
3. 내부 호출도 일정 시간 동안 반복해서 걸 경우 블락
예) 1분 안에 10회 혹은 20회 호출 시 1시간 블락
4. 내부에서 발급된 경우 리프레시 만료 전까진 재발급 제한
@미니님a
3번이 보통 자주 쓰이는 방법이죠^^
AWS 기본 방화벽에 포함이 되어 있더라구요
DDOS 방지용이죠 이건 기본으로 켜고 할 예정입니다.
리프레시 토큰은 없는걸로 설계 했어요^^
로그인 자체가 없기도 하고
리프레시 토큰을 이용해서 또 공격 포인트가 생기는것 같아서요
불특정 손님이 찾는 가게는 늘 항상 관리를 해야죠.
@techstar 맞는 말씀입니다.
@똥싼너구리 참 어려운 문제입니다. 회원인증없이 불특정다수에게 서비스를 제공한다는게... 화이팅입니다!!