《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》——第1章 HTML5

简介:

本节书摘来自华章计算机《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》一书中的第1章,作者:(美) 希马(Shema, M.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章 HTML5

书面语言的历史至少可以追溯到5000年前,当时的苏美尔人使用楔形文字来记录账簿、法律以及清单,这种原始的石刻标记语言为现代的超文本标记语言(HTML)开辟了道路。类似维基百科这样的网站,不就是收集了拜占庭法律、《吸血鬼猎人巴菲》剧集列表、《星际迷航》中的外星人名单等内容吗?由此可见,人类喜欢使用书面语言来记录各种信息。
很大程度上,HTML是基于多种事实上的实现发展起来的标准。很少有浏览器定义HTML是什么,这意味着HTML标准在一定程度上体现了真实世界。如果你根据规范来书写网页,那么浏览器将会按照你的期望来适当地渲染它。在早期的演化发展过程中,标准的缺点是当时的页面并不统一,不同的浏览器有着不同的怪异(quirk)模式,导致产生类似如下的脚注:“建议使用IE 4浏览本网页”、“建议使用Mosaic浏览本网页”。这些怪异模式成为了开发人员的噩梦,导致出现不良设计模式(例如常见的通过用户代理嗅探来侦测性能而不是通过特性测试)或过度依赖于插件(例如Shockwave)。标准中还包含一些很少使用的标签(< acronym>)、糟糕的UI设计(< frame>和< frameset>)或非常令人厌恶的标签(< bgsound>和< marquee>)。HTML2试图澄清某些差异,于1995年11月成为标准。HTML3未能与HTML2合并为可接受的标准。HTML4于1999年12月提出。
8年之后,HTML5作为公共草案出现,过了一年左右才大受欢迎。现如今,在HTML4出现12年之后,标准的最新版本正准备从草案状态变为正式状态。在这12年间,网络逐渐成为人们日常生活中无所不在的组成部分,从第一条包含网站URL的电视广告到数十亿美元的IPO,再到伴随技术或文化的变迁带来的类似欺诈或犯罪这样的黑暗面。
当前的浏览器对HTML5的支持程度多种多样。很多网站以这样或那样的方式使用HTML5。本章所介绍的标准仍然是正在使用的草案,尽管如此,大多数细节都已经足够确定,最多只有JavaScript API或标头(header)发生细微的变化。主要的安全原则仍然是适用的。
HTML5中包含了Web开发人员从他们最喜爱的浏览器中带来的事实标准映射到HTML5标准之中,但更重要的是,标准的制定者在历史实现与优化架构的规范之间进行了认真地考虑。HTML5最引人注目的特点就是对如何解析HTML文档进行了明确描述。最明显的是,各浏览器的实现并不一致,使得针对HTML和JavaScript的攻击可以围绕这些怪异模式下手乃至利用它们。我们将会在后续章节中介绍这些怪异模式带来的安全问题,尤其是第2章。
本章将介绍HTML5及其相关标准的新概念、关注点和考虑等。那些希望针对这些标准的设计找出快速攻击方法或细微漏洞的人会感到失望。由浏览器开发人员、网站开发人员以及安全性测试人员等人所组成的安全生态圈已经对HTML5给予了仔细的关注。通过对HTML4和HTML5的比较可以发现,在HTML4标准中,安全性(security)和隐私(privacy)这两个词分别出现了14次和1次,而在HTML5当前的草案中则分别出现了73次和12次。尽管更多次数地提及并不能够说明一定就会更加安全,但是至少体现出在标准的发展过程中,安全和隐私已经得到更多关注,变得更加重要。
新的标准并未解决浏览器可能面对的所有的安全问题,它所做的是减少之前的标准中不明确的做法、提供更多关于安全实践的指导、建立更严格的HTML解析规则、在不弱化浏览器的前提下引入新特性。新标准带来的好处是更好的浏览体验,缺点是浏览器竞相增加对新特性的支持以及网站开发人员接纳它们的过程中在实现中带来的错误和bug。

相关文章
|
5天前
|
存储 JavaScript 数据可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
27 1
|
4天前
|
开发框架 缓存 前端开发
利用Visual Basic构建高效的ASP.NET Web应用
【4月更文挑战第27天】本文探讨使用Visual Basic与ASP.NET创建高效Web应用的策略,包括了解两者基础、项目规划、MVC架构、数据访问与缓存、代码优化、异步编程、安全性、测试及部署维护。通过这些步骤,开发者能构建出快速、可靠且安全的Web应用,适应不断进步的技术环境。
|
2天前
|
XML 存储 前端开发
【Web 前端】HTML、XHTML、XML 有什么区别?
【4月更文挑战第22天】【Web 前端】HTML、XHTML、XML 有什么区别?
|
3天前
|
移动开发 开发者 HTML5
【专栏】构建响应式Web界面:Flexbox与Grid的实战应用
【4月更文挑战第27天】本文介绍了Flexbox和Grid两种现代Web布局技术,它们能帮助开发者创建美观、响应式且兼容性好的界面。Flexbox通过主轴和交叉轴实现复杂布局,如垂直居中、响应式和多列布局。Grid布局则利用网格线定义容器和网格项,适用于网格系统和响应式设计。文中以构建响应式Web界面为例,展示了如何结合Flexbox和Grid实现头部、内容区域和底部的布局。
|
5天前
|
前端开发 JavaScript Go
构建高性能Web应用:优化前端资源加载
在构建现代Web应用时,优化前端资源加载是至关重要的一步。本文将介绍一些提升Web应用性能的关键策略,包括减少HTTP请求、压缩和合并资源、使用CDN加速、以及异步加载技术等。通过实施这些优化策略,开发人员可以显著提升网站的加载速度和用户体验。
|
5天前
|
前端开发 JavaScript UED
Web前端开发:探索技术与艺术的交融
Web前端开发:探索技术与艺术的交融
8 1
|
5天前
|
存储 中间件 Go
探索Gin框架:快速构建高性能的Golang Web应用
探索Gin框架:快速构建高性能的Golang Web应用
|
6天前
|
前端开发 JavaScript Java
前端与后端:构建现代Web应用的双翼
前端与后端:构建现代Web应用的双翼
|
6天前
|
安全 前端开发 JavaScript
在Python Web开发过程中:Web框架相关,如何在Web应用中防止CSRF攻击?
在Python Web开发中防范CSRF攻击的关键措施包括:验证HTTP Referer字段、使用CSRF token、自定义HTTP头验证、利用Web框架的防护机制(如Django的`{% csrf_token %}`)、Ajax请求时添加token、设置安全会话cookie及教育用户提高安全意识。定期进行安全审计和测试以应对新威胁。组合运用这些方法能有效提升应用安全性。
14 0
|
7天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式