HTML5 新的表單元素 2.keygen元素
<keygen>標簽用于表單對密鑰的生成。當(dāng)提交表單時,私鑰存儲在本地,公鑰發(fā)送到服務(wù)器上。
代碼實例如下:
<form action="demo_keygen.asp" method="get">
Username: 〈input type="text" name="usr_name" />
Encryption: <keygen name="security" />
<input type="submit" />
</form〉
在這里,很多人可能都會好奇,這個keygen標簽到底是干什么的? 一般會在什么樣的場景下去使用它呢?下面就為大家解除疑惑。
首先<keygen>標簽會生成一個公鑰和私鑰,私鑰會存放在用戶本地,而公鑰則會發(fā)送到服務(wù)器上。那么<keygen>標簽生成的公鑰/私鑰是用來做什么的?在看到公鑰/私鑰的時候,應(yīng)該就會想到非對稱加密。沒錯,<keygen>標簽在這里起到的作用也是一樣的。
<keygen>標簽所期望的是在收到SPKAC(SignedPublicKeyAndChallenge)排列后,服務(wù)器會生成一個客戶端證書(Client Certificate ),然后返回到瀏覽器,讓用戶去下載保存到本地。在需要驗證的時候,使用本地存儲的私鑰和證書后,通過TLS/SSL安全傳輸協(xié)議到服務(wù)端做驗證。
以下是使用<keygen>標簽的益處:
?可以提高驗證時的安金性。
?如果是作為客戶端證書來使用:可以提高對M丨TM攻擊的防御力度。
?keygen標簽是跨越瀏覽器實現(xiàn)的,實現(xiàn)起來非常容易。
?可以不用考慮操作系統(tǒng)的管理員權(quán)限問題。
例如,操作系統(tǒng)對不同用戶設(shè)置了不同的瀏覽器權(quán)限,IE或者其他瀏覽器可以設(shè)置禁用key的生成,在這種情況下,可以通過keygen標簽來生成和使用沒有誤差的客戶端證書。
點擊加載更多評論>>