2012-06-12 1 views
2

이 정확한 상황은 question입니다. csrf 보호와 RESTful API를 결합 할 수있는 가능한 기술은 무엇입니까? SSL과왜 OAuth는 RESTful API에 대해 CSRF를 방지 할 수있는 유용한 기술입니까?

  • 기본 인증을 사용하는 방법에 대한

    answer 주어진 회담

내가 OAuth2.0에 구현에 대한 확신 이미 오전 OAuth를 어디 것 응용 프로그램 당

  • 1 API 키 각 앱에 대해 access_token, client_id, client_secret을 보유하고 있어야합니다.

    그러나 CSRF 예방에 실제로 도움이된다는 사실을 알지 못했습니다.

    제 생각에는 하루가 끝날 때까지 ssl이 필요하다는 것입니다.

    OAuth2.0에서 클라이언트 응용 프로그램이 자원 소유자 대신 요청을 보내면 client_id, client_secret 및 access token과 같은 데이터 매개 변수와 함께 보내야합니다.

    HTTPS가 없으면 client_id, client_secret 및 access 토큰이 누수 또는 중간자를 통해 알 수 있으면 액세스가 만료 되어도 CSRF가 발생할 수 있습니다. 토큰.

    내 이해가 정확합니까?

  • 답변

    2

    리소스가 OAuth 2로만 보호되고 공격자가 client_id, client_secret 및 액세스 토큰을 얻는 경우 CSRF가 필요하지 않습니다. 공격자는 보호 된 리소스 사용 요청을 직접 보낼 수 있으며 OAuth 2는 요청 소스를 필터링하지 않기 때문에 서비스됩니다. 액세스 토큰 만 필요합니다.

    일반적으로 man-in-the-middle 공격을 피하려면 인증 서버와 보호 된 리소스 모두에 대해 HTTPS를 사용해야합니다. 그러나 "인증 코드 부여"시나리오를 사용하는 경우 (즉, 자체 웹 응용 프로그램에서 사용하는 경우) 액세스 토큰은 리소스 소유자에게도 알려지지 않으며 인증 코드 만 가로 챌 수 있습니다. 따라서 웹 응용 프로그램에 인증 서버와 보호 된 리소스 모두에 대한 신뢰할 수있는 (예 : 인트라넷) 연결이있는 경우 보호 된 리소스에 대한 암호화되지 않은 연결을 사용하는 것이 안전합니다.

    +0

    본질적으로, 내가 맞다고 말하고있는 것입니까? –

    +0

    예, 있습니다. 사양 http://tools.ietf.org/html/draft-ietf-oauth-v2-27, 하위 섹션 10.9를 참조하십시오. 요약하면 승인 서버는 TLS (즉 HTTPS)를 사용해야하며 클라이언트는 TLS 보호 redirect_uri를 사용해야합니다. 10 절에서는 CSRF를 비롯한 몇 가지 보안 고려 사항을 다룹니다. –

    +0

    안녕하십니까, 그 경우 내 후속 질문은 http://stackoverflow.com/questions/11071482/oauth2-0-server-stack-how-to-use-state-to-prevent-csrf-for-draft2입니다. -0-v20 –