Share via


驗證者

驗證器可以幫助您防止全值替換已加密欄位的資料值。例如,請參考下面的薪資資料表。

Employee_ID

Standard_Title

Base_Pay

345

影印室助手

Fskj%7^edhn00

697

財務長

M0x8900f56543

694

排版設計總監

Cvc97824%^34f

駭客不必破解加密,就可以從儲存加密文字的內容,推斷出大量資訊。由於財務長的薪水比影印室助手高,因而可推論加密為 M0x8900f56543 的值必然大於加密為 Fskj%7^edhn00 的值。若是如此,則只要是對資料表具有 ALTER 權限的使用者,都可以將影印室助手的 Base_Pay 欄位資料,換成財務長的 Base_Pay 欄位資料,為影印室助手加薪。這種全值替換攻擊完全跳過加密。若要阻止全值替換攻擊,可以在對純文字進行加密之前,先加入內容資訊。這個內容資訊是用來確認純文字資料沒有被移動。

如果驗證器參數是在資料加密時指定,則必須使用同一個驗證器將資料解密。在加密時,驗證器的雜湊會與純文字一起加密。在解密時,必須將同一個驗證器傳遞給解密函數。如果兩個驗證器不相符,解密就會失敗,也就表示其中的值在加密之後曾被移動過。我們建議您使用將結果儲存為驗證器之資料表的主索引鍵。