前後端分離,介面引數傳輸安全

2021-10-07 08:19:03 字數 1054 閱讀 3480

介面安全問題

請求身份是否合法?

請求引數是否被篡改?

請求是否唯一?

accesskey&secretkey (開放平台)

請求身份

為開發者分配accesskey(開發者標識,確保唯一)和secretkey(用於介面加密,確保不易被窮舉,生成演算法不易被猜測)。

防止篡改

引數簽名

按照請求引數名的字母公升序排列非空請求引數(包含accesskey),使用url鍵值對的格式(即key1=value1&key2=value2…)拼接成字串stringa;

在stringa最後拼接上secretkey得到字串stringsigntemp;

對stringsigntemp進行md5運算,並將得到的字串所有字元轉換為大寫,得到sign值。

請求攜帶引數accesskey和sign,只有擁有合法的身份accesskey和正確的簽名sign才能放行。這樣就解決了身份驗證和引數篡改問題,即使請求引數被劫持,由於獲取不到secretkey(僅作本地加密使用,不參與網路傳輸),無法偽造合法的請求。

重放攻擊

雖然解決了請求引數被篡改的隱患,但是還存在著重複使用請求引數偽造二次請求的隱患。

timestamp+nonce方案

nonce指唯一的隨機字串,用來標識每個被簽名的請求。通過為每個請求提供乙個唯一的識別符號,伺服器能夠防止請求被多次使用(記錄所有用過的nonce以阻止它們被二次使用)。

然而,對伺服器來說永久儲存所有接收到的nonce的代價是非常大的。可以使用timestamp來優化nonce的儲存。

假設允許客戶端和服務端最多能存在15分鐘的時間差,同時追蹤記錄在服務端的nonce集合。當有新的請求進入時,首先檢查攜帶的timestamp是否在15分鐘內,如超出時間範圍,則拒絕,然後查詢攜帶的nonce,如存在已有集合,則拒絕。否則,記錄該nonce,並刪除集合內時間戳大於15分鐘的nonce(可以使用redis的expire,新增nonce的同時設定它的超時失效時間為15分鐘)。

前後端分離

關於前後端分離的一些好的文章推薦 前端框架 為什麼前後端分離 最直白的理解,我認為是因為在開發過程中,前端總是需要等待後端的環境搭建好之後,前端才能獲取相關資料,對於前端的開發影響很大,事實上前端並不關心後端的開發,那麼有沒有方法不讓後端影響前端的開發呢?其實後端提供的是什麼?乙個執行伺服器,乙個就...

前後端分離

在此說明 前後端分離有利於後端的快速開發,但並不利於搜尋引擎優化 seo 上圖能清晰的看到,使用前後端分離模式進行開發,瀏覽器會向伺服器傳送請求,伺服器會向瀏覽器傳送乙個類似框架的html,是固定的空殼,此時瀏覽器再使用ajax請求向後端伺服器索要資料,後端伺服器返回json字串給瀏覽器,從而使瀏覽...

前後端分離

前後端分離的好處 1 徹底解放前端 2 提高工作效率,分工更加明確。3 區域性效能提公升 4 降低維護成本 2 前後端分離的概念 後台只需要提供api介面,前端呼叫ajax實現資料呈現 3 場景和要求 4 web前端路由 就是根據url分配到對應的處理程式,原理和路由器原理相同,不同的請求位址會交給...