在HTML5迅速崛起的同时,我们也不得不认识到HTML5给我们带来的安全问题,而且是不容小觑的安全问题。本文主要从劫持、跨域请求、桌面通知、地理定位、表单篡改这几个方面来分析了HTML5中不容忽视的几个安全“漏洞”,开发者要时刻警惕。
“虽然,HTML5对加强网站互动性的新功能有着一定的作用和贡献,但是对于不怀好意者,HTML5的“漏洞”更容易成为他们的攻击目标。”
因此,本文会从五个方面介绍HTML5易被攻击的方向,希望广大应用开发者能够在使用HTML5的同时注意这些“漏洞”并加以防范。
1、点击劫持变的更加容易:点击劫持本身不是种新的攻击,这种攻击的目的是窃取受害者的鼠标按钮点击,然后将点击定向到攻击者所指定的其他页面。攻击者的目的是让用户在不知情的情况下点击隐藏的链接。目前,对于点击劫持最好的服务器端防御措施之一是被称为Framekilling的技术。本质上来说,受到影响的网站可以利用JavaScript来验证自己是否在一个iframe中运行,如果是的话,就拒绝显示页面内容。这种技术已经被在用在 Facebook、 Gmail和其他一些网站中。但是HTML5在iframe中增加了一个新的沙盒属性,该属性会让网站停止执行JavaScript脚本。在大多数情况 下,这其实是比较安全的做法,但也存在缺点,就是会抵消目前对点击劫持最好的防御措施。
2、利用跨域请求或WebSockets的端口扫描:有了HTML5,浏览器现在可以连到任何IP地址或网站的(几乎)任何端口。虽然除非目标网站有特别的允许,不然并不能接收到来自任意端口连接的回应,但是研究人员表示,这类请求所花的时间可以用来判断目标端口是打开的还是关闭的。因此攻击者就可以直接利用浏览器对受害者的内部网络进行端口扫描。
3、利用桌面通知做社会工程学攻击:HTML5有一个新功能——桌面通知。这些出现在浏览器之外的弹出窗口,其实是可以用HTML程序代码进行定制的。虽然这种功能带来了很不错的交互方式,但也可能导致社会工程学攻击,例如网络钓鱼或者假冒杀毒软件等。
4、利用地理定位追踪受害者:地理定位是HTML5新功能中最受注目的一个。因为安全和隐私的考虑,网站必须先得到用户的批准,随后才能获得位置讯息。然而就和以前出现过的其他功能一样,例如Vista的用户帐户控制,Android的应用程序权限,还有无效的HTTPS凭证等,这些需要用户作决定的安全措施几乎没有任何效果。而一旦有了授权,网站不仅可以知道受害者的位置,而且还可以在用户移动时对其进行实时追踪。
5、表单篡改:另一个新功能让攻击者可以在被注入JavaScript的网站(例如XSS攻击)中更改该网页上的表单行为。举例来说,攻击者可以改变一个网络商店的正常行为,不是将内容送到购买或是登录页面,而是将用户的身分认证信息发送到攻击者自己的网站。
以上5点HTML5漏洞对于开发者来说是比较致命的,所以我们在开发HTML5程序时要非常小心。尽管HTML5有这些安全问题,但我坚信HTML5依然是web的未来。