跳至內容
野空文庫
使用者工具
登入
網站工具
搜尋
工具
顯示頁面
舊版
反向連結
最近更新
多媒體管理器
網站地圖
登入
>
最近更新
多媒體管理器
網站地圖
您在這裏:
root
»
learn
»
backend-dev
»
記錄或驗證密碼的方法
learn:backend-dev:記錄或驗證密碼的方法
本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。
# 記錄或驗證密碼的方法 > 在資安領域沒有所謂絕對的安全,你只能不斷提高攻擊者的成本 ## 方法一、Encode 就是換個方式表達資料而已,所以一旦被知道是用什麼 encode 安全性就不復存在。 且現在電腦效能很快,所以列出一堆 decode 的結果並不困難。 所以 **不行** 。 --- ## 方法二、Encrypt 因為 server 也要驗證使用者,所以 decrypt 所需的 key 也勢必要存在 server 上, 既然 cracker 連 db access 都拿得到了,拿到 key 也就不是什麼難事。 所以 **不行**。 --- ## 方法三、Hash hash 不可逆,所以感覺好像可行。 但因為現在電腦運算速度很快,且網路上也有很多建好的表(如 [md5hashing](https://md5hashing.net/hash/sha1/1785bf0ed0f6346210af2d64b310a99b4024ce44)) 直接把 hash 值丟進去就可以直接知道原本的字串是什麼,所以一樣 不安全。 --- ## 方法四、Salting (Hash with salt) salt 是建立是建立密碼時隨機產生的值,把 salt 和 hash 過的值都存進 db, ``` # hash 過的值 SHA1("PASSWORD" + "h7.@-]%<#L") ``` 因為 hash 過的值夠長夠亂,所以網路上的表根本也不可能有這個字串,也就是無法查表破解。 但其實,cracker 都拿到 db access 了,自然也就拿得到 salt,所以他可以把每個人的 salt & hash 都用自己的電腦進行計算。 但每個人的 salt 都不一樣,所以每個密碼都要重算一次,這對 cracker 沒有好處。 > 在儲存密碼時至少要加鹽再雜湊,而且隨機產生的 salt 盡量要含有特殊字元 --- ## 方法五、Salting + hash using Bcrypt Bcrypt 是一種慢雜湊方法,可以設定迭代次數。 所以要重新建表就更慢更久更困難,這也就意味著更安全。
learn/backend-dev/記錄或驗證密碼的方法.txt
· 上一次變更: 2024/12/22 21:17 由
127.0.0.1
頁面工具
顯示頁面
舊版
反向連結
回到頁頂