api介面可以分兩種一種是需要登入才能獲取資料,使用的是token
使用jwt加密技術加密使用者資訊,設定token的過期時間一般是2個小時,提高token的安全性,然後把token返回給客戶端,客戶端可以將token存入localstorage或者cookie中,cookie和localstorage的區別是cookie只能存4k的資料,localstarage能存5m,cookie可以設定過期時間,預設為一次會話,localstarage會一直存在,除非手動清除,下次請求時可以把token放入請求頭里,帶到伺服器,通過jwt進行解密,如果解不回來,或token過期,那就認為使用者沒有登入。
有兩種方法 第一種就是跳到登入介面,讓使用者在登入,但這樣就使使用者需要每兩個小時就要登入一下,使用者體驗很不好
第二種就是設定乙個refeshtoken過期時間要比token時間長,如果返回的狀態碼是401,就是token過期了,讓他帶著refeshtoken去換取新的token和refeshtoken,把新的token和refeshtoken替換舊的,然後繼續上一次的請求,這裡要用到ajax的同步。這樣通過refeshtoken完成了**重新整理。這樣能實現介面的安全
還有一種介面是不需要登入的介面,比如說取得推薦商品,獲得分類等,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。
我們可以在前台使用時間戳和隨機數還有乙個固定的口令,用md5或是別的加密方式(rsa非對稱加密),生成乙個簽名,當需要訪問介面的時候,把時間戳,隨機數,簽名通過url傳遞到後台。後台拿到時間戳,隨機數後,通過一樣的演算法規則計算出簽名,然後和傳遞過來的簽名進行對比,一樣的話,返回資料。
但還是不安全,可以通過抓包工具獲得時間戳,隨機數,簽名,這樣還是能獲取資料,怎麼解決呢?我們可以使這個簽名只能使用一次,可以把簽名存入資料庫或redis中,我選擇的是redis,速度快,把簽名作為鍵,值的話隨便,這樣在驗證簽名前查詢redis中是否存在相同的簽名,不存在才能往下走。
這樣不需要登入的介面也能實現介面的安全。
api介面安全
介面的安全性主要圍繞token timestamp和sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看 token授權機制 使用者使用使用者名稱密碼登入後伺服器給客戶端返回乙個token 通常是uuid 並將token userid以鍵值對的形式存放在快取伺服器中。服務端接收...
API 介面安全
什麼是時序攻擊以及如何防範時序攻擊?時序攻擊屬於側通道攻擊 旁路攻擊 side channel attack 側通道攻擊是指利用通道外的資訊,比如加解密的速度 加解密時晶元引腳的電壓 密文傳輸的流量和途徑等進行攻擊的方式,乙個詞形容就是 旁敲側擊 舉乙個最簡單的計時攻擊的例子,某個函式負責比較使用者...
api 介面安全
不同於業務引數,系統引數是無論如何都要傳遞給後端的引數。傳遞時,不與業務引數混在一起,而是在請求header中傳輸。後端會為每個第三方 呼叫方設定乙個秘鑰,需要保密,只有後端 與第三方 呼叫方自己知道。該秘鑰用於在呼叫界面前,生成簽名,後端在收到請求後,驗證簽名。簽名由前端生成,並在請求header...