当提交表单时,私钥存储在本地,公钥发送到服务器。
HTML5 <keygen> 标签实例:
带有 keygen 字段的表单:
<form action=demo_keygen.asp method=get> Username: <input type=text name=usr_name /> Encryption: <keygen name=security /> <input type=submit /> </form>
html5 keygen标签的优缺点介绍:
首先<keygen>标签会生成一个公钥和私钥,私钥会存放在用户本地,而公钥则会发送到服务器。那么<keygen>标签生成的公钥/私钥是用来做什么用的呢?很多朋友在看到公钥/私钥的时候,应该就会想到了非对称加密。没错,<keygen>标签在这里起到的作用也是一样。
<keygen>标签所期望的是在收到SPKAC(SignedPublicKeyAndChallenge)排列后,服务器会生成一个客户端证书(Client Certificate),然后返回到浏览器让用户去下载保存到本地。之后,用户在需要验证的时候,使用本地存储的私钥和证书后通过TLS/SSL安全传输协议到服务端做验证。
以下是使用<keygen>标签的优点:
一个是可以提高验证时的安全性;
同时如果是作为客户端证书来使用,可以提高对MITM攻击的防御力度;
keygen标签是跨越浏览器实现的,实现起来非常容易;
另外就是可以不用考虑操作系统的管理员权限问题。例如操作系统对不同用户设置了不同的浏览器权限,IE或者其他浏览器可以在设置里面禁用key的生成,这种情况下,可以通过keygen标签来生成和使用没有误差的客户端证书。
<keygen>标签的不足之处也有很多:(比如下面的十种)
证书(Certificates)在不同的系统里不是容易方便的(但是对于某些系统,这又是一个优势)。
没有在一个标准的位置存储私钥。
没有标准的key长度或者hash来实现浏览器无关性。
不支持算法(RSA, DSA, ECC等)。
签名只能基于MD5,而不能使用其他的加密算法。
浏览器支持
所有主流浏览器都支持 <keygen> 标签,除了 Internet Explorer 和 Safari。
【相关推荐】
html标签legend的具体用法你知道吗?legend标签的属性和使用方法详解
html map标签是什么?html map标签的结构及具体使用方法详解
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。