首先,http協議的無狀態特性決定了是無法徹底避免第三方呼叫你的後台服務。我們可以通過crsf、介面呼叫頻率、使用者行為分析(**等)等各個方面來增加第三方呼叫的難度,也可以通過新增乙個中間層比如node.js來實現;
1. 非法訪問通常使用認證來解決,方法很多session,token,oauth第三方框架等等。
(1)常規的方法:使用者登陸後生成token,返回客戶端,然後伺服器使用aop攔截controller方法,校驗token的有效性,每次token是一樣的;
(2)使用者登陸後生成臨時token,存到伺服器,並返回客戶端,客戶端下次請求時把此token傳到伺服器,驗證token是否有效,有效就登陸成功,並生成新的token返回給客戶端,讓客戶端在下一次請求的時候再傳回進行判斷,如此重複。 這種方法有效能問題,但也有乙個漏洞,如果使用者在一次請求後,還未進行下一次請求就已被黑客攔截到登入資訊並進行假冒登入,他一樣可以登入成功並使使用者強制下線,但這種方法已大大減少被假冒登入的機會。
(3)兩層token:一般第一次用賬號密碼登入伺服器會返回兩個token,時效長短不一樣,短的時效過了之後,傳送時效長的token重新獲取乙個短時效,如果都過期,那麼就需要重新登入了。當然更複雜你還可以做三層token,按照業務分不同token。
2. 對於合法的認證訪問,通常需要進行ip訪問頻率和次數的限制,各種api框架都有支援,比如django restframework的throttling。
通常我們可以通過使用過濾器和快取如redis來判斷訪問次數及頻率。在filter層加乙個過濾器,攔截所有的請求,解析出請求的使用者,然後通過快取,獲取到該使用者當前已訪問次數。而快取,要求最好能夠自動超時**,也就是說比如你想設定三分鐘內限制訪問次數,那麼你記錄的快取有效期就三分鐘就好了,過了三分鐘快取自動失效,計數器也就重新從0開始了。類似於發簡訊的介面,每分鐘只能發一次;
3. 最外層的限制可能需要在nginx上配置rate limit。
前後端分離專案中前端如何呼叫後端介面?
前後端啟動專案,無法訪問介面。這是因為前後端的請求埠不一樣,如果是本地開發最簡單的方式就是禁用谷歌瀏覽器的安全策略,可以參考這裡。這個問題是跨域引起的,下面我們正式開始講關於跨域的問題。這裡我只推薦這兩種方式跨域,其它的跨域方式都還有很多但都不推薦,真心主流的也就這兩種方式。開發環境 生產環境 方案...
前後端分離, 前端如何防止直接輸入URL進入頁面?
前後端分離,如何防止使用者直接在位址列輸入url進入頁面,也就是判斷使用者是否登入,沒有,則直接跳轉到登入頁,後台可以用session記錄使用者登陸的狀態,疑問的是前端每次ajax請求,都要做狀態判斷麼,沒登入就location.href login.html 還是有什麼別的寫法?請教大神,重點想知...
前後端分離後,使用token進行介面呼叫驗證處理
目前專案的發展趨勢是前後端分離,前端使用vue react angular等技術,後端提供介面。這種方式將後端開發人員從jsp html css js 中解放出來,更專注於後台邏輯的實現。但前後端分離後,由於後端介面是無狀態的,那使用者資訊等敏感資料如何拿到呢?可以使用token 令牌 機制進行實現...