`
jateide
  • 浏览: 7090 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

HTML5标签<keygen>的应用场景

阅读更多

很多朋友不太清楚HTML5里面的<keygen>标签的应用场景,在这里说一下我个人对这个标签的理解。

 

首先<keygen>标签会生成一个公钥和私钥,私钥会存放在用户本地,而公钥则会发送到服务器。那么<keygen>标签生成的公钥/私钥是用来做什么用的呢?很多朋友在看到公钥/私钥的时候,应该就会想到了非对称加密。没错,<keygen>标签在这里起到的作用也是一样。

 

<keygen>标签所期望的是在收到SPKAC(SignedPublicKeyAndChallenge)排列后,服务器会生成一个客户端证书(Client Certificate),然后返回到浏览器让用户去下载保存到本地。之后,用户在需要验证的时候,使用本地存储的私钥和证书后通过TLS/SSL安全传输协议到服务端做验证。

 

以下是使用<keygen>标签的益处:

 

1. 一个是可以提高验证时的安全性;

2. 同时如果是作为客户端证书来使用,可以提高对MITM攻击的防御力度;

3. keygen标签是跨越浏览器实现的,实现起来非常容易;

4. 另外就是可以不用考虑操作系统的管理员权限问题。例如操作系统对不同用户设置了不同的浏览器权限,IE或者其他浏览器可以在设置里面禁用key的生成,这种情况下,可以通过keygen标签来生成和使用没有误差的客户端证书。

 

 

那么<keygen>标签就没有不好的地方了么?当然不是,相反,<keygen>标签的不足之处有很多:

1. 证书(Certificates)在不同的系统里不是容易方便的(但是对于某些系统,这又是一个优势)。

  • 2. 没有在一个标准的位置存储私钥。

  • 3. 在html页面看到<keygen>标签生成的内容总是让人困惑和难以理解。

  • 4. <keygen>标签会让用户从一个列表里选择适当的key,但是大多数用户不知道该如何选择。

  • 5. 很多用户并不清楚是否该根据提示下载证书(Certificate)。

  • 6. <keygen>标签不提供一个能管理证书让其失效的机制。
  • 7. 没有标准的key长度或者hash来实现浏览器无关性。
  • 8. 不支持算法(RSA, DSA, ECC等)。
  • 9. key的大小选择只能来源于<keygen>标签生成的表单内容,而不是用户可以选择的。
  • 10. 签名只能基于MD5,而不能使用其他的加密算法。

  • 11. <keygen>标签没有“不可输出(Non-Exportable)”的提示。(这里的标记我没有搞明白是什么作用。)
  • 12. <keygen>标签没有“硬件保护(Hardware protected)”的标记。(这里的标记我没有搞明白是什么作用。)
  • 13. <keygen>标签没有采取不可见的保护,类似于密码框。
  • 14. 证书(Certificate)受限与只有基于RSA的应用程序。
  • 15. 可以修改<keygen>标签生成的本地的表单内容,从而直接降低了key的安全成。
  • 16. 如果加入微软的认证服务器(Microsoft Certificate Server),只能通过DCOM API的方式,并且支持"server"的证书类型。
  • 17. <keygen>标签生成的内容没有使用标准格式,并且只支持已有协议的一部分,例如PKCS10,CMC和CRMF。
分享到:
评论

相关推荐

    html5博客主页

    其次,HTML5提供了更好的表单控制,新增了诸如&lt;output&gt;、&lt;datalist&gt;、&lt;keygen&gt;和&lt;details&gt;等元素,以及更强大的输入类型,如date、email、url等,这使得用户界面更加友好,数据验证也更为方便。 此外,HTML5支持...

    html5英文版技术文档

    DOCTYPE html&gt;`声明、`&lt;html&gt;`标签、`&lt;head&gt;`和`&lt;body&gt;`部分。 - `&lt;!DOCTYPE html&gt;`:声明文档类型为HTML5。 - `&lt;html&gt;`:文档根元素。 - `&lt;head&gt;`:包含元信息,如字符集、标题、样式表链接等。 - `&lt;body&gt;`:...

    HTML 5 从入门到精通

    HTML5在表单处理方面有了显著改进,提供了新的输入类型(如date、email、url、search等),增强了表单验证功能,以及新的表单控件如&lt;output&gt;、&lt;datalist&gt;、&lt;keygen&gt;和&lt;progress&gt;。这些改进让表单更易于使用且功能更...

    HTML5期末考试题型.docx

    - HTML5引入了许多新的语义标签,如`&lt;audio&gt;`、`&lt;canvas&gt;`、`&lt;command&gt;`、`&lt;datalist&gt;`、`&lt;details&gt;`、`&lt;dialog&gt;`、`&lt;embed&gt;`、`&lt;keygen&gt;`、`&lt;mark&gt;`、`&lt;meter&gt;`、`&lt;output&gt;`、`&lt;progress&gt;`、`&lt;rp&gt;`、`&lt;rt&gt;`、`...

    html5中文参考手册

    3. 表单控制:HTML5对表单元素进行了增强,新增了&lt;input type="date"&gt;、&lt;input type="email"&gt;等类型,以及&lt;output&gt;、&lt;datalist&gt;和&lt;keygen&gt;等新元素,使得数据输入和验证更为便捷。 4. 多媒体支持:HTML5不再依赖...

    课本案例(大).zip

    HTML5引入了如&lt;header&gt;、&lt;nav&gt;、&lt;section&gt;、&lt;article&gt;、&lt;aside&gt;、&lt;footer&gt;等结构性元素,这些元素帮助我们更好地组织文档结构,增强语义化,使网页内容更易于理解和解析。 3. 媒体元素: HTML5的&lt;audio&gt;和&lt;video&gt;...

    HTML文件的增强标记

    6. **SVG矢量图**:HTML5引入了`&lt;svg&gt;`标签,支持在网页中内嵌矢量图形,这意味着图形可以无限缩放而不会失真,对于图标、图表和其他需要高质量图像的场景非常理想。 7. **Web Workers和Web Storage**:Web Workers...

    H5面试汇总(含答案)最新版(1).docx

    五、图像格式的区别与应用场景 1. **JPEG(JPG)**:适用于高质量的连续色调图像,如照片,因为它使用有损压缩,可以显著减小文件大小,但可能会丢失一些细节。不支持透明度。 2. **GIF**:支持透明度和动画,适合简单...

    面试整理(含答案)最新版.docx

    五、图像格式的区别及应用场景 1. **JPEG(JPG)**:不支持透明,适用于照片或色彩丰富的图像,因为它使用有损压缩,降低文件大小但可能产生视觉上的质量损失。 2. **GIF**:支持透明和动画,适用于简单图形、图标和...

    HTML5 新标签全部总汇(推荐)

    5. `&lt;command&gt;` 标签:用于定义命令按钮,但其实际应用并不广泛,可能需要结合JavaScript来实现特定功能。 6. `&lt;datalist&gt;` 标签:用于创建选项列表,与`&lt;input&gt;`标签配合使用,提供下拉选择建议,常见于输入框的...

    HTML5实践:HTML5

    HTML5对表单元素进行了增强,新增了诸如&lt;output&gt;、&lt;datalist&gt;、&lt;keygen&gt;、&lt;input type="date"&gt;等元素,以及属性如required、placeholder、pattern等,提高了表单验证和用户体验。 6. 存储机制 HTML5引入了两种离线...

    html5_demos:测试 html5 的新功能

    1. **语义化元素**:HTML5引入了更多具有明确语义的标签,如&lt;header&gt;、&lt;footer&gt;、&lt;nav&gt;、&lt;article&gt;和&lt;section&gt;等,这些元素有助于提高网页内容的可读性和可访问性,同时让代码结构更加清晰。 2. **Canvas绘图**:...

    前端面试题.pdf

    最后,提到的websocket是建立在TCP连接上的双向通信协议,允许浏览器和服务器之间进行实时双向通信,非常适合需要高实时性的应用场景。 通过以上内容,我们可以看到前端技术的广泛性和深入性,面试者在准备前端面试...

    html5新增知识点.pdf

    - `&lt;source&gt;`标签在`&lt;audio&gt;`和`&lt;video&gt;`中用于指定不同格式的媒体源,浏览器会选择最合适的格式播放。 2. **客户端存储**: - `localStorage`允许网站在用户的浏览器中永久存储数据,即使关闭浏览器后数据仍然...

    DFS120453131

    在结构方面,HTML5引入了新的语义化标签,如`&lt;header&gt;`、`&lt;footer&gt;`、`&lt;article&gt;`、`&lt;section&gt;`等,这些标签有助于提高网页的可读性和可访问性,让搜索引擎和屏幕阅读器更好地理解网页内容的结构。 Web Storage是...

    密码

    此外,`&lt;keygen&gt;`元素虽然在HTML5中已废弃,但它曾经用于生成公钥/私钥对,适用于SSL证书等应用场景。 为了提高用户体验,一些现代网站还采用了两步验证或多因素认证(MFA)。这种认证方法要求用户提供除了密码之外...

    尚硅谷_前端_面试题

    - **HTML语义化**指的是使用有意义的HTML标签来构建页面结构,使得内容更具可读性和易维护性,同时有助于搜索引擎更好地理解和抓取页面内容。例如,使用`&lt;article&gt;`、`&lt;section&gt;`、`&lt;header&gt;`、`&lt;footer&gt;`等标签...

    H5面试汇总(含答案)最新版).docx

    H5 面试汇总(含答案)最新版 本文档总结了前端 H5 常见的面试题及答案,涵盖了 HTML5 的基本概念、语义化、IE ...掌握这些知识点可以帮助我们更好地理解 HTML5 和图片格式的特点,从而更好地应用在实际开发中。

    Tasker_Pro_v5.9.2_beta3.apk

    接听电话* TASKER:更改图标集,如果,结束如果,转到操作,执行任务,配置文件切换,查询操作,设置小部件图标,设置小部件标签,停止,等待,等到 *变量:设置,清除,公司,Dec,查询,随机化,拆分,联接,列表...

Global site tag (gtag.js) - Google Analytics