前言
上一篇記錄了如何在 Kestrel 中使用 HTTPS(SSL), 也是我們目前項(xiàng)目中實(shí)際使用到的。
數(shù)據(jù)安全往往是開發(fā)人員很容易忽略的一個(gè)部分,包括我自己。近兩年業(yè)內(nèi)也出現(xiàn)了很多因?yàn)榘踩珕栴}導(dǎo)致了很多嚴(yán)重事情發(fā)生,所以安全對我們開發(fā)人員很重要,我們要對我們的代碼的安全負(fù)責(zé)。
在工作中,我們常常會見到 encode,base64,sha256, rsa, hash,encryption, md5 等,一些人對他們還傻傻分不清楚,也不知道什么時(shí)候使用他們,還有一些人認(rèn)為MD5就是加密算法。
在 ASP.NET Core 中,為數(shù)據(jù)保護(hù)相關(guān)提供了一批新的 API,包括加密解密機(jī)制,下面就讓我們來看看吧。
目錄
•加密,編碼,哈希之間的區(qū)別
•數(shù)據(jù)保護(hù)(Data Protection)介紹
•ASP.NET Core 中的數(shù)據(jù)保護(hù)
•總結(jié)
編碼,加密,哈希之間的區(qū)別
1、編碼
編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程,他們是可逆的。
如 url、base64、jsunicode、utf-8等等。
2、加密
加密是可逆的,類似于編碼也是把數(shù)據(jù)從一種形式轉(zhuǎn)換為另一種形式,它通過一個(gè)特定的加密的密匙,相對應(yīng)的有解密的過程。加解密的算法有2種:對稱加密算法和非對稱加密算法。
對稱:DES、AES、SM1、RC4 等等。
非對稱:RSA、ECC、SM2 等等。
3、哈希
又叫"散列",就是把任意長度的數(shù)據(jù)轉(zhuǎn)換成固定長度的“指紋”,這個(gè)過程是不可逆的。而且只要輸入發(fā)生改變,輸出的 hash值也會有很大不同。
它還有一個(gè)特性是相同的輸入總是有相同的結(jié)果, 這種特性恰好合適用來用來保存密碼。
如:MD5、SHA256, SHA512, RipeMD, WHIRLPOOL等等。
數(shù)據(jù)保護(hù)(Data Protection)介紹
在看數(shù)據(jù)保護(hù)官方文檔的時(shí)候,微軟的文檔是這樣寫的,大致意思就是他們基于幾點(diǎn)需求,要開發(fā)一套數(shù)據(jù)保護(hù)的庫以便用來給受信任的客戶端和不受信任的客戶端來使用。這幾點(diǎn)要求就是:
1、真實(shí)性、完整性
舉了一個(gè)身份驗(yàn)證cookie的例子,就是服務(wù)端生成了一個(gè)包含xyz權(quán)限的token,然后會在將來的某個(gè)時(shí)間過期,這個(gè)時(shí)候就需要重新請求生成一個(gè),怎么樣來保證請求的token不是被篡改過的。
2、機(jī)密性
服務(wù)器要保證請求是受信任的,所以就需要一些包含特定操作環(huán)境的信息,比如一個(gè)路徑,一個(gè)權(quán)限或者一個(gè)句柄或者其他的一些東西特定于服務(wù)器的東西,這些信息不應(yīng)該透漏給不受信任的客戶端,也就是說類似于私鑰。
新聞熱點(diǎn)
疑難解答
圖片精選