Cookie防篡改機制

2022-02-21 16:12:09 字數 1284 閱讀 9945

為什麼要做cookie防篡改,乙個重要原因是cookie中儲存有判斷當前登陸使用者會話資訊(session)的會話票據-sessionid和一些使用者資訊

當發起乙個http請求,http請求頭會帶上cookie,cookie裡面就包含有sessionid。

後端服務根據sessionid,去獲取當前的會話資訊。如果會話資訊存在,則代表該請求的使用者已經登陸。

伺服器根據登陸使用者的許可權,返回請求的資料到瀏覽器端。

因為cookie是儲存在客戶端,使用者可以隨意修改。所以,存在一定的安全隱患。

使用者wall在瀏覽器端輸入使用者名稱密碼,發起post請求到後端伺服器。後端伺服器驗證合法,返回response,並set-cookiesessionid=***;username=wall;

瀏覽器端在接收到http響應後,發現set-cookie,將其存入本地記憶體或硬碟中。

瀏覽器端再次發起請求,帶上cookie資訊sessionid=***;username=wall;,請求修改自己的頭像資訊。

伺服器根據sessionid驗證當前使用者已登陸,根據username,查詢資料庫中的對應資料,修改頭像資訊。

如果當前使用者知道username的作用,修改username=pony。再次發起請求,則伺服器接收到請求後,會去修改usernamepony的資料。

這樣,就暴露出資料被惡意篡改的風險。

伺服器為每個cookie項生成簽名。如果使用者篡改cookie,則與簽名無法對應上。以此,來判斷資料是否被篡改。

原理如下:

舉個栗子:

比如伺服器接收到請求中的cookie項username=pony|34yult8i,然後使用簽名生成演算法secret(pony)=666

演算法得到的簽名666和請求中資料的簽名不一致,則證明資料被篡改。

鑑於cookie的安全性隱患,敏感資料都應避免儲存在cookie。

應該根據sessionid,將敏感資料儲存在後端。取資料時,根據sessionid去後端伺服器獲取即可。

另外,對一些重要的cookie項,應該生成對應的簽名,來防止被惡意篡改。

01WebApi防篡改機制 HMAC機制

防篡改,顧名思義就是防止有人惡意篡改請求資料url以達到惡意攻擊的目的,那要怎麼才能實現這樣的目的呢?很簡單,將要請求的資料加上合作號 合作key按規則組織成乙個字串,獲取對應的md5摘要,然後將該摘要及合作號同時作為請求的一部分一起傳遞 合作key禁止傳遞 舉個簡單的例子 加入我們需要進行簽名的j...

防篡改物件

答 不可擴充套件物件 object.preventextensions 這樣就不能向物件中新新增屬性和方法了 不可擴充套件量一級保護措施。判斷 object.i tensible 方法 使用這個方法可以確定物件是否為可篡改,如果可篡改,則返回true,相反返回false。密封的物件 object.s...

js 防篡改物件

簡單介紹一下js的防篡改物件 1 不可擴充套件物件 不能新增,可以修改和刪除 預設情況下,所有物件都是可擴充套件的。即任何時候我們都可以為物件新增屬性和方法。但使用object.preventextensions 方法可以改變這一預設行為,即不能再為物件新增新的屬性和方法,但是仍然可以修改和刪除已有...