看板 talk 關於我們 聯絡資訊
前面說過HTTP是應用層最普遍的傳輸協定,針對用戶的身分驗證, HTTP具備了基本驗證與摘要驗證。 基本驗證就是伺服器一般使用帳密驗證的方式。 而摘要驗證,則是比較複雜一點;瀏覽器在要發送用戶資訊(例如帳密)之時, 並不直接對伺服器發送用戶帳密,而是 1 先對伺服器發送一個「準備要發送用戶訊息」的請求, 2 伺服器接收到這個請求,會回傳一個nonce給瀏覽器。 3 瀏覽器接收到這個nonce, 才會將用戶帳密(密碼會事先用hash演算法,轉成hash code)、這個nonce、 其他相關資訊,先使用hash演算法計算出一串hash code, 再將這串hash code,以及用戶帳號,傳送給伺服器。 4 所以伺服器接收到的,就是由nonce計算出來的一串hash code、用戶帳號。 5 這時伺服器可以根據用戶帳號,取出存在於資料庫,對應的密碼hash code。 然後拿著這段密碼hash code,跟自身早先給予的nonce,以及其他用戶資訊,計算出 另一串hash code。接著拿這段新計算出來的hash code,跟接收到的hash code來比對。 6 若兩串hash code的比對結果是一樣的,表示兩串hash code的組成是一模一樣, 由於不同input(input是密碼hash code、nonce、用戶資訊) 產生兩串相同hash code的機率是趨近於0, 而且hash code還可以透過加鹽的方式讓這個趨近於0的機率變的更低。因此,兩串相同的 hash code,就表示有著相同的密碼hash code、相同的nonce、相同的用戶資訊...... 7 由此即可證明用戶的資訊,確實是屬於某個合法(用戶資料有存在於資料庫)的用戶。 這就是HTTP摘要驗證。 ----------------------------------------- 那什麼是HTTPS呢?就是將HTTP訊息本體,用SSL/TLS這個方式來加密。透過對HTTP訊息 加密,即可對用戶機敏資訊做到資安三要素的機密性。 --------------------------------------- 那什麼是JWT?就是一種在用戶登入系統後,用於驗證用戶在網路中身分的工具。 其實要做到用戶登入系統後的身分驗證,可以使用HTTP Session即可。 但HTTP Session主要是用於同一系統內的身分驗證。 若是跨系統的身分驗證,則最好使用JWT。 JWT本身是在用戶成功登入系統後,由伺服器經過其私鑰加密,再分發給瀏覽器的。 之後瀏覽器若要再次發送用戶資訊,就只需要發送JWT這個代表用戶資訊的訊息, 傳送到伺服器後,由伺服器的公鑰來解密,即可辨識出JWT這個用戶資訊。 因為是跨系統傳送JWT的,多個系統都需要對JWT解密,故解開JWT的密鑰必須是公鑰。 而加解密的技術,通常用的是RSA演算法。這就是JWT的概況。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.45.43 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/talk/M.1704712596.A.B81.html ※ 編輯: TKB5566 (101.12.45.43 臺灣), 01/08/2024 19:17:45
show6669: 對 一般網站https 就夠了 01/08 19:41
TKB5566: 終於有人捧場了 我好感動QQ 01/08 19:48
show6669: ?? 01/08 20:32