2009-07-23 2 views
0

facebook iframe 앱을 만들 때 Facebook은 GET 매개 변수로 애플리케이션에 매개 변수를 전달합니다. 쿼리 문자열에는 fb_sig라는 필드가 있습니다.이 필드는 페이스 북에서만 만들 수있는 고유 한 서명입니다.Facebook Iframe 앱의 사용자 로그인 상태 얻기

내가 겪고있는 문제는 쿼리 문자열을 내 응용 프로그램 URL에 추가하고 페이스 북 외부 어느 곳에서든 응용 프로그램에 액세스 할 수 있다는 것입니다. 페이 스북 API가 제공하는 메소드는 특정 값에 대해 GET 매개 변수/COOKIE 만 확인합니다. 사실 페이스 북 사용자의 로그인 상태를 반환 할 수있는 API 메소드가 있습니까 (GET 매개 변수 또는 COOKIE를 기반으로하지는 않음).

제 의견으로는 이것은 누구나 브라우저 요청을 추적하고 다른 사용자의 계정에 액세스하기 위해 쿼리 문자열을 얻을 수 있기 때문에 주요 보안 결함입니다. 또한 페이스 북에서 제공하는 fb_sig 매개 변수는 만료되지 않으므로 항상 유효성 검사를 통과하는 데 사용할 수 있습니다.

HTTP_REFERER 플래그를 확인하여 페이스 북에서만 요청을 받았는지 확인했지만 많은 사람들이 리퍼러를 SPOOF로 만들 수 있습니다. 어떤 제안이나 해결책?

답변

0

getLoggedInUser()은 세션과 연결된 사용자의 uid을 반환합니다. 세션이 현재 상태가 아닌 경우 올바른 ID를 반환하지 않습니다.

세션 통과와 관련하여 설명하는 결함은 Facebook에만 국한되지 않고 WWW의 특성입니다. 세션에서 인증을 기반으로하는 사이트는 세션 토큰이 URL이나 쿠키를 통해 전달되는지 여부와 관계없이 설명하는 것과 동일한 결함이 있습니다. 세션 ID가 여전히 현재 상태 인 채 발견되면 (스니핑), 다른 보안 양식이없는 한 해당 세션 ID를 사용하는 사이트에 자유롭게 액세스 할 수 있습니다.

HTTP 보안의 유일한 실제 형식은 SSL 암호화 통신입니다.

+0

문제는 사용자가 내 응용 프로그램 offline_access를 허용하여 세션 키가 무한하므로 getLoggedInUser()를 사용하더라도 사용자가 로그 아웃 되어도 여전히 uid를 반환한다는 것입니다. –