後端基礎:資安細節隨手筆記

Hugh's Programming life
2 min readAug 8, 2019

--

HASH function 加鹽(salting)

除了可以直接把密碼 hash 之外,我們可以另外針對單一用戶添加一段特別的亂碼,最後達到密碼長度更長的結果,也就可以更好的避免被人使用 rainbow table 查表的方式破解密碼。

假設密碼跟加鹽分別是:

pw = '12345' , salt = 'smp3ms2fd00sfs'

原本就是:

hash('12345')

改為

hash('12345smp3ms2fd00sfs')

一般會把 salt 放在資料庫,在比對密碼的時候下載下來比對

SQL Injection 風險

比如說在 SQL 內部使用變數的值是在網頁上面的顯示的,即便設置成 hidden 也是很容易被 Injection,因為可以通過 devtool 去變更。

$sql = SELECT * FROM $tableName Where ...

假設這個 $tableName 是在網頁上 hidden

一樣可以做更改

Dropbox 如何儲存密碼

原文

dropbox 利用上圖這種方式,把密碼,先經過 SHA512 之後,在經過每個使用者加不同的鹽之後,再用難度為 10 的 bcrypt 處理過。而 bcrypt 被設計成一種很慢,很難以通過字定義硬體或 GPUs 的方式去加速運算。

最後再使用 AES256 加密

--

--

Hugh's Programming life

我是前端兼後端工程師,主要在前端開發,包括 React、Node.js 以及相關的框架和技術。之前曾擔任化工工程師的職位,然而對電腦科技一直抱有濃厚的熱情。後來,我參加了轉職課程並開設這個部落格紀錄我的學習過程。於2020年轉職成功後,我一直持續精進技能、擴展技術範疇跟各種對人生有正面意義的學習,以增加我的工作能力。