2012-05-31 65 views

回答

1

這是可能的。

CSRF預防通常針對簡單的網站而不是API,因爲API通常旨在被其他網站訪問。隱藏的麪包屑和令牌是防止此類攻擊的最常見方式,但在可消費的API上無法正常工作。

你可能需要的是一個好的主認證機制。易受CSRF攻擊的Web應用程序的主要弱點之一是Cookie。如果您的API不需要它們,那麼使用其他身份驗證機制(如OAuth或HTTP摘要)可能是答案,因此外部用戶仍然可以安全地使用API​​(無需討厭的碎屑驗證)。

在JS客戶端應用程序中,HTTP Auth Basic和OAuth 2.0都可行。這裏有一個OAuth2的演示:https://gist.github.com/563893

Twitter在主網站內部使用它自己的公共API,所以有證據表明這樣的事情是可能的,儘管我不確定他們如何專門阻止外部CSRF。每個請求都由接收方完成(位於此處:https://api.twitter.com/receiver.html),並且授權令牌由cookie傳輸。你可能需要進一步研究它們的實現。

+0

如何將密鑰存儲在客戶端? (我的客戶是瀏覽器) – vlycser