Authorize의 redirectUrl 에서의 공격 방지 문의

안녕하세요?

위 질문에 대한 답변을 받고 Kakao.Auth.authorize() 로 다시 구현했습니다.

다만, redirectUri 에 해당하는 부분을 저희 서버에 구현해야 하는데 DDos 공격을 방지할 방법은 없을런지요?

해당 redirectUri (예: https://oursite.com/oauth)에 대량의 request라도 몰린다면 곤란한데요. 공격자와 진실한 로그인 유저를 구분하는 방법이 없을런지 궁금합니다.

(하다못해 보내주시는 인증코드code가 어떤 정해진 격식을 띠는지라도 알려주시면 좋겠습니다)

감사합니다~!

서비스에 적용하실 DDos 공격에 대한 방지는 redirectUri 라고해서 특별한 점은 없을 것 같아요.

redirectUri로 직접 들어온 요청과 Kakao.Auth.authorize 함수를 통해서 들어온 요청을 구분하는 방법은 state로도 가능할 것 같아요.
(Kakao.Auth.authorize 함수 요청 시 전달한 state는 인증코드 전달 시 query string으로 함께 전달 됩니다.)

참고) https://developers.kakao.com/sdk/reference/js/release/Kakao.Auth.html

@dan.jwp 님 답변 감사합니다. 다른 리퀘스트는 CDN에서 캐시로 막아주는데 oauth는 매번 서버를 방문하여 연산을 하게 되거든요. State 파라미터는 이미 많이 이용하고 있는데요. 그렇다 해도 리퀘스트하는 걸 본 후에 공격자가 state, code도 모방해서 분당 수십만 리퀘스트를 보낸다면 서버를 다운시킬 수 있지 않을까요? CDN에서모두 여과해주지 못하니…

ajax+ backend curl로 주고받을 땐 이런 문제를 쉽게 피할 수 있었는데 이번에 authoriz를 구현하실 때 redirect 가 끼어서 여러 경우의 수를 방지하는데 좀 애를 먹고 있습니다.(지난 번 login api는 이런 문제는 없었으나 3자 웹뷰가 잘 안 되서 안내해주신대로 포기했습니다)

공개된 서비스 URL로 요청이 몰리는 것에 대한 안내는 저희가 드리기 어려울 것 같아요.
(저희 인증 서버를 통해서 들어가는 요청은 사용자 식별 및 동의 과정이 필요하기 때문에 공격이 불가능할 것으로 예상됩니다.)

말씀하신 ajax를 포함해서 공개된 URL은 서비스에서 대응하지 않으면 공격 가능한 상태라고 생각되요.

저희가 권장하는 방법은 아니지만 CDN을 반드시 거쳐야 하는 상황이라면 redirectUri를 CDN 리소스로 하고 해당 리소스 내 javascript로 location을 파싱하는 방법도 있을 것 같아요.

1개의 좋아요