驗證者
驗證器可以幫助您防止全值替換已加密欄位的資料值。例如,請參考下面的薪資資料表。
Employee_ID |
Standard_Title |
Base_Pay |
---|---|---|
345 |
影印室助手 |
Fskj%7^edhn00 |
697 |
財務長 |
M0x8900f56543 |
694 |
排版設計總監 |
Cvc97824%^34f |
駭客不必破解加密,就可以從儲存加密文字的內容,推斷出大量資訊。由於財務長的薪水比影印室助手高,因而可推論加密為 M0x8900f56543 的值必然大於加密為 Fskj%7^edhn00 的值。若是如此,則只要是對資料表具有 ALTER 權限的使用者,都可以將影印室助手的 Base_Pay 欄位資料,換成財務長的 Base_Pay 欄位資料,為影印室助手加薪。這種全值替換攻擊完全跳過加密。若要阻止全值替換攻擊,可以在對純文字進行加密之前,先加入內容資訊。這個內容資訊是用來確認純文字資料沒有被移動。
如果驗證器參數是在資料加密時指定,則必須使用同一個驗證器將資料解密。在加密時,驗證器的雜湊會與純文字一起加密。在解密時,必須將同一個驗證器傳遞給解密函數。如果兩個驗證器不相符,解密就會失敗,也就表示其中的值在加密之後曾被移動過。我們建議您使用將結果儲存為驗證器之資料表的主索引鍵。