HTTP下密碼的安全傳輸 OAuth認證

2022-07-15 06:39:09 字數 2208 閱讀 8196

在複雜的web環境下,我們沒有百分的把握保證資訊在傳輸的過程中不被接貨,那不是用明文如何告訴伺服器自己的身份呢?

在一些高度通訊安全的網路中,資料傳輸會使用https作為傳輸協議,但是通常情況下我們沒必要使用https傳輸,雖說安全,但傳輸資料都需要加密解密,很費事。我們可以使用一些加密方式(md5)對密碼進行加密即可。但是僅僅對密碼加密沒有任何作用,所以可以在密碼中加入一些其他字元,合併之後是這個密碼成為臨時密碼。

username:

password:

在上面,提交表單時,pwd並不是真是的密碼,他是pwd與t混合再加密的字串。這樣的話即便被截獲也是乙個無效的資料。即便截獲後知道了破解方式,還可以在後台給他設定乙個時效限制。

<?php 

define("uid", "user-a");

define("pwd", "user-a-pwd");

if(time() - $_post['tid'] > 60*2 ||

$_post['uid'] !== uid ||decrypt(pwd + $_post['tid']) !== $_post['pwd'])

?>

即如果下面三個條件有乙個不滿足就報錯

1.時間超過兩分鐘

2.uid不匹配

3.pwd與t的組合密碼不匹配

當然,上面提到的encrypt和decrypt都是約定好的加密和解密方式,通常會使用md5加密。

這樣的加密傳輸方式。需要客戶端和伺服器端的時間比較準確。如果考慮時間不準確的問題以及hacker動作迅速的問題,那就得用token來驗證了。

所謂的token,其實就是在登入之前向伺服器傳送乙個請求,獲取准入的乙個臨時密碼,這個臨時密碼是由伺服器給出,所以不存在上面所說的時間不準確的問題,同時這個token也是乙個隨機字串,只能單次使用,hacker很難獲取,即便獲取也無法使用,因為下一步登入所需的資訊他沒有。

很多**的認證流程都是用的

oauth認證原理:

通過你在平台申請的api key向https://……/oauth/authorize請求乙個臨時密碼,也就是token code,然後利用token code向https://……/oauth/token請求使用者資料。整個流程十分簡單。

這是乙個簡單的demo,獲取你的頭像和姓名。

使用token的弊端是需要額外傳送一次請求,過程稍微複雜。有些公司vpn通道就是利用token做密碼,為了保證高安全性,他們使用的是乙個資訊與伺服器同步硬體裝置,和銀行發的動態口令一樣,每次登陸都需要輸入這個口令,那這個口令也就是token,不過他不是網路傳輸獲取,所以安全性更高

瀏覽器後退按鈕

這個在註冊或者登陸的時候是乙個普遍的問題,登陸之後,跳轉到另外乙個頁面,我的滑鼠有兩個側鍵,是用於前進和後退的,有時候會誤點側鍵,這個時候頁面又會回到之前的登入頁面,但事實是使用者已經登入了,所有頁面的狀態都應該是已登入的,不管什麼情況下都不應該讓使用者在看到這個頁面。使用者的點選操作會引發上面的問題,而程式history.go(-1) & history.back()也會有一樣的bug。

這樣的問題處理方案比較簡單,ajax 拿到 success 的狀態碼時立刻做跳轉,但是這裡不能用window.location.href,這樣瀏覽器還是會記錄這個登入歷史,應該使用window.location.replace,替換當前歷史記錄。

記住密碼

使用者最煩的就是每次登入頁面都要輸入長長的賬號密碼,如果沒有勾選「記住密碼」,則使用者的登入狀態儲存在回話的 session 中,關閉頁面或者瀏覽器的時候,回話結束,session 被刪除,這樣當使用者下次登入的時候又需要重新輸入密碼。表單頁面的「記住密碼」核取方塊預設狀態應該是已選擇,使用者的潛意識行為都是要少操作的。

當使用者提交資訊成功之後,直接在 cookie 中儲存賬號密碼?這樣的做法顯然是不合理的,密碼怎麼能夠明文儲存呢,有人會想到加密處理密碼然後再儲存,或者使用伺服器來設定 cookie,這些做法都是可以的,不過最好的方式是,當使用者成功提交資訊時,伺服器給前端提供乙個 token,這個 token 是用於自動登入的,我們只需要儲存 token 就行了,這樣就很好的避免了 cookie 中存放使用者隱私資訊了。

還有乙個要注意的是,當使用者取消了「記住密碼」的核取方塊時,應該立即清除相關 cookie。

普通 http 網路下資料的安全傳輸(設計原理)

size small 曾幾何時,https 安全但缺乏效率,http 有效率但卻缺乏安全,魚與熊掌 兩者不可兼得!https 採用不對稱加密演算法建立安全的連線,之後用對稱加密演算法傳遞資料,安全性毋庸置疑 但因效率較低和授權費用 第三方 ca 機構認證 而難以普及。http 設計的初始是基於相互信...

安全加密 資料安全傳輸的原理

安全是相對的,沒有絕對的安全。資料的安全 機密性完整性 身份認證 握手階段 資料傳輸階段 原因 比非對稱加密加密快。加密 解密資料,需要兩樣東西 演算法 金鑰。通過非對稱加密演算法,加密後傳輸的。非對稱加密的金鑰分為 公鑰 私鑰。私鑰自己私有,公鑰公之於眾。實際傳遞對稱演算法金鑰流程更複雜 例如ss...

HTTPS 網路安全傳輸協議下的訪問

https http 超文字傳輸協議 ssl 安全連線層 http 的安全版本.https 會專門建立乙個 安全的資料傳輸通道來傳輸資料,外界拿不到任何資料,現階段最安全的協議,目前在 http 模式下三大運營商傳送的惡意廣告氾濫,並且可以獲得使用者的個人資訊,知乎有專門文章講解如何到工信部投訴的內...