我正在使用大量AJAX與服務器通信的網頁上工作。反過來,服務器有一個廣泛的REST/JSON API暴露Web客戶端調用的不同操作。保護Web API免受未經授權的應用程序的攻擊
本網站由匿名用戶和經過身份驗證的用戶使用。正如您所預料的那樣,由經過身份驗證的用戶發出的Web服務調用需要身份驗證,並且因此可以防止未經授權的用戶或應用程
然而,該網站有很多是不需要身份驗證功能,而且其中的一些利用匿名Web服務。我用來阻止外人調用此Web服務的唯一方法是使用CSRF token。我知道,CSRF令牌在這方面並不是非常有用......在一段時間後,即使使用CSRF令牌,您也可以瞭解如何使用Web服務。
當然,你也可以使用一個驗證碼,防止應用程序或機器人從自主使用網絡服務。但是,任何人都可以使用它。
另一方面,在客戶端和服務器之間共享密鑰將毫無用處。這是因爲任何局外人從網頁源代碼中讀取它的能力。
我想使這些Web服務難以像任何第三方應用程序一樣調用。除了使用CSRF令牌,你還會做什麼?這聽起來有點愚蠢,但嘿,也許這是愚蠢的,我只是失去了我的時間。
注意:由於此應用程序使用瀏覽器而不是「可執行」作爲客戶端,因此this question與討論無關。我不能使用服務器和客戶端之間的祕密(據我所知,至少)
所以你的意思是,不希望人類或計算機能夠使用您的API? –