web系統密碼儲存策略

2021-09-25 18:11:57 字數 1718 閱讀 2479

前些日子it界很火的一則新聞是某酒店的資料庫洩露問題,身邊很多人在討論資料庫安全的問題,大家經常說提公升密碼複雜度、加密等,但是很多人並不知道在開發的時候,使用者的密碼怎麼處理,或者說,處理的並不恰當,這篇文章主要介紹在系統設計的過程中,我們的密碼究竟應該怎麼處理才最大限度的保證安全。

還是從脫庫說起,資料庫被人拉走了,最可怕的是什麼?個人手機、身份證、位址??這些是很重要,但是,其實個人隱私資料,獲取的難度不是很大,而且不容易直接對乙個人造成巨大的傷害,但是,密碼被人知道了,就是很可怕的事情。因為,大部分人不同的系統都是共用密碼。這個錯誤比較低階,但是很常見,所以,密碼,是被脫庫後最容易被人利用。所以,密碼是必須加密的,不把使用者密碼加密的系統和公司,都該判刑。

string password=md5("明文")
對使用者的輸入進行md5加密後,就直接儲存在資料庫,可能15年前這還是比較安全的儲存方式,但是現在,md5已經不再安全,越是簡單的密碼,被撞庫獲取到原文的可能性非常的高,所以直接使用md5加密後儲存密碼,顯然已經是非常不安全的方式了。

前文說道,密碼太短,顯然已經不安全了,那麼為了提公升負責度,就會強制把使用者的密碼變得更加複雜,於是,就產生了密碼加salt的方案。salt肯定是需要乙個比較的複雜的字串,長度可以長一點。而且最好是,每個使用者的salt是不一樣的。以前的資料庫結構是:

id使用者名稱密碼1

user1

34234sdfse2342dggs234s

2user2

d34desf3432sdf23423sdf

那麼比較安全的方式應該是:

id使用者名稱

密碼salt

1user1

sdf452342sdfsd23234sdf

982934&7934708hhg12&%&()()()iuhuhgggifiknsdf

2user2

234df3234sdf234asfddsd

&&8uhhhkkhkl9(7kbkh&……)adksjknklasdlfkjkkkkk

string password=sha1("明文"+salt)
這裡,我們用了相對而言撞庫難度比較大的sha1的加密方式來取代md5加密,這樣基本就是乙個比較安全的密碼了,即使資料被脫庫了,撞庫也很基本不可能破解出明文。

但是,這樣就真的安全了嗎?不一定,我們還少了傳輸加密以及客戶端加密。

首先我們說說傳輸加密,其實,這個現在已經有很標準的解決方案——https,這裡我們就不多說了。

我們主要所屬說說客戶端加密:

可能大家覺得有了傳輸加密了,實際客戶端加密也不太重要,顯然不是,這裡有個很重要的場景就容易出現風險:

所以,客戶端加密也是很有必要的。現在的前端技術都是支援md5加密,所以我們就在前端對使用者的資料進行了md5加密。

客戶端**:

var password=md5("明文");
伺服器**:

string password=sha1("客戶端md5加密後的支付"+salt)
實際,這樣最終存在資料庫的,就是乙個做了雙重加密的支付。網路傳輸和日誌記錄的就是單次加密的字元,整體的安全度就非常高了。

這樣,乙個好的密碼體系應該就是這樣了:

這是一篇非常基礎的文章,但是卻被很多的開發和產品忽略,風險總在一念之間。安全永遠是乙個相對的概念,我們只能提公升破解安全的成本,無法做到絕對的安全。

web系統測試策略

1.按系統架構可分為 客戶端測試 伺服器端測試 網路上測試 2.按職能可分為 應用功能的測試 web應用服務的測試 安全系統的測試 資料庫服務的測試 3.按軟體質量特性 1 功能測試 鏈結測試 表單測試 cookies測試 設計語言測試 資料庫測試 2 效能測試 連線速度測試 負載測試 壓力測試 3...

Linux系統密碼策略設定詳解

由於工作需要最近需要將公司的多台linux伺服器進行密碼策略的設定,主要內容是增加密碼複雜度。操作步驟如下,不會的同學可以參考 操作前需要掌握如下幾個簡單的知識點 其實不掌握也行,不過學學沒壞處 pam pluggable authentication modules 是由sun提出的一種認證機制。...

漠視安全 chrome儲存密碼的瘋狂策略

在登入各種 的過程中,我們常常會使用不同的使用者名稱和密碼,這會造成記憶上的負擔。如果你是 chrome 使用者,在登入新 的時候,會看到它儲存密碼的提示,並且很可能點了 確定 這樣做的話,你可以自動登入各種 而且在不同的電腦同步,真的非常方便。不過,你是否考慮過安全問題?或許你會想,google ...