我有一個AngularJS應用程序(使用ASP.NET Web API作爲後端),不需要用戶進行身份驗證(應用程序沒有登錄)。我想確保AngularJS應用程序調用的REST API方法只能從應用程序調用。我顯然不能使用基於令牌的認證。如何保護不使用身份驗證的AngularJS應用程序?
如果不採取任何特別措施,可以使用瀏覽器地址欄或通過編寫調用它們的桌面應用程序來自由調用REST API方法。僅當瀏覽器通過來自具有其他來源的站點的HTML頁面調用API方法時,纔會考慮同源策略。 REST API因此向公衆開放並且容易被破解。
我想知道我能做些什麼來安全地限制對REST API的訪問。任何想法或經驗?
編輯1: 我發現我的問題簡單的解決方案:我只是檢查URL引用的主機是一樣的請求的URL的主機。使用的ASP.NET Web API的REST API操作使用的代碼是:
private bool ApiCallIsAllowed()
{
var request = HttpContext.Current.Request;
return (request.UrlReferrer != null &&
request.UrlReferrer.Host == request.Url.Host);
}
我只是不能100%肯定,如果我總是得到URL引用。
編輯2:根據this問題URL引用是不可靠的。遊民。
您是否在IIS上的同一個應用程序上託管API和AngularJS? – 2014-09-23 09:21:32
是的。這是IIS上的相同(SPA)應用程序。 – 2014-09-23 12:51:53