2012-06-12 18 views
2

我對此具體情況question:將csrf保護與RESTful API結合使用的一些可行技術是什麼?爲什麼OAuth是一種可行的技術來阻止RESTful API的CSRF?

一個answer有關使用了SSL

  • 基本身份驗證給出會談
  • 每個應用程序
  • 的OAuth

我已經確信有關實現的OAuth2.0在那裏你會

  • 1個API密鑰每個應用程序都有access_token,client_id,client_secret。

    但是,我不知道這實際上有助於防止CSRF。

    我的意見是,在一天結束時,你仍然需要ssl。

    因爲在OAuth2.0中,當客戶端應用程序代表資源所有者發送請求時,它們需要一起發送數據參數,例如client_id,client_secret和訪問令牌。

    如果沒有HTTPS,如果client_id,client_secret和訪問令牌通過泄漏或中間人知道,那麼仍然有CSRF的機會,雖然很小,但由於訪問的期限令牌。

    我的理解是否正確?

  • 回答

    2

    如果資源僅受OAuth 2保護,攻擊者獲取client_id,client_secret和訪問令牌,則根本不需要CSRF。攻擊者可以直接發送請求以使用受保護的資源並將被投放,因爲OAuth 2不會過濾請求的來源,它只需要訪問令牌。

    一般情況下,您一定要使用HTTPS認證服務器和受保護的資源,以避免中間人攻擊。但是,如果您使用「授權代碼授權」方案(即從您自己的Web應用程序使用它),則訪問令牌即使對資源所有者也是未知的,他只能截取授權代碼。因此,如果您的Web應用程序與授權服務器和受保護資源之間都具有受信任(例如Intranet)連接,則可以安全地使用與受保護資源的未加密連接。

    +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 –