2014-10-12 4 views
1

인증 코드가 인증 토큰과 비교하여 수명이 짧지 만 'GET'을 쿼리 문자열로 전송할 때 취약점이 있습니까? 그것은 GET 방법을 사용하여 암호를 보내는 것과 유사하지 않습니까?OAuth 인증을위한 쿼리 문자열의 일부로 Facebook 'code'매개 변수

즉, 인증 페이스 북은 사용자의 브라우저를 mysite.com으로 리디렉션 한 후 인증 코드를 쿼리 문자열로 보냅니다. 암호화되지 않았습니까? 귀하의 패킷을 듣고있는 중간 사람이 그것을 읽고 그것을 세션 하이재킹 (mysite.com의 세션)에 사용할 수 있습니까?

말,

  1. 나는 에 브라우저 측 (페이스 북에서 '코드'를받은 후) 리디렉션을 차단 (사용하여 일부 브라우저 부가 기능/플러그인)
  2. 내가 전체를 복사 URL (www.mysite.com?code=AQCOtAV..blah)을 리디렉션하고 다른 브라우저에서 사용해보십시오.
:
  • 요청은 (3 단계 나는 정말 이 단계를 시도이) 통과하고 mysite.com의 비밀 키와 클라이언트 ID 및 인증합니다와 함께 인바운드 인증 코드와 페이스 북 연락 인증 토큰을 생성합니다

    나는 여기에 뭔가 빠져 있다는 것을 알고있다. 친절하게 도와주세요.

  • +0

    어떤 취약점이 있습니까? 무슨 일이 일어나지 않도록해야합니까? –

    +0

    인증 코드를 암호화되지 않은 방식으로 네트워크를 통해 보내고 있습니다. 중개인이 패킷을 수신하는 경우 승인 코드가 생겨 세션을 가로 챌 수 있습니다. 맞습니까? – KingJulien

    +1

    당신은 절대 틀립니다. 사양의 인증 코드 부여 부분을 읽으십시오. 요약하면 코드는 보이지 않는 백 채널을 사용하여 원격 웹 응용 프로그램이 토큰을 안전하게 교환합니다. 임베디드 응용 프로그램은 다른 시나리오를 사용합니다. –

    답변

    1

    인증 코드가 질의 매개 변수로 전송 되더라도 HTTPS를 사용하여 전송한다고 지적 해 주신 고마워요 @ Zólyomi.

    응답 : https를 통해 전송되는 쿼리 문자열은 안전합니다. 어떤 HTTP 메소드 GET 또는 POST를 사용하든, 암호화되어 있고 중개자가 없어도들을 수 있습니다. 더 많은 정보. Is an HTTPS query string secure?

    그러나 쿼리 문자열에 암호를 보내는 것은 좋은 방법이 아닙니다. 암호는 서버 로그에 URL 등의 일부로 일반 텍스트로 나타날 수 있습니다. 그러나 Authorization 코드는 수명이 짧고 Authorization 토큰으로 교환되면 쓸모가 없으므로 여기서는 적용되지 않습니다.

    관련 문제