虽然现在常见的Clickjacking攻击没有利用浏览器内核代码的缺陷,但是也应当视为安全问题。随着攻击案例越来越多,浏览器厂商也讨论出了一个方案—网站可以在HTTP头中声明自己不允许在框架中加载,现在,主流的浏览器几乎都已经支持这种声明,如果网站做出了正确声明,将有效地阻止点击劫持的发生。
部分的点击劫持要归结于元素的样式特性。在层叠样式表中,名为z-index的样式指明了元素的堆叠顺序。其中一条简单的规则是:z-index越高,元素堆叠顺序越高。如果两个元素的位置有重合,那么堆叠顺序高的元素会放置在堆叠顺序低的元素前面。
因此,按照上述规则灵活调整z-index,将攻击者欺骗用户点击的内容布置在堆叠的最上层,将被攻击网站放在堆叠顺序的最下层,即可构造Clickjacking攻击页面。
9.1.1 NoScript
实际攻击中,攻击者肯定会设法让用户看不到被攻击的页面,因此要凭观察准确地识别一个页面是否进行点击劫持攻击还是有些困难的。但是一些插件,例如NoScript含有点击劫持防护功能,这可以帮助我们避免受到点击劫持或者类似的劫持攻击。在NoScript插件中开启ClearClick之后,访问可疑的页面时,该插件会弹出警告。
9.1.2 X-Frame-Options
2009年IE8引入了X-Frame-Options这个字段,专门用于防御点击劫持。在IE启用之后后迅速被其他浏览器包括Chrome、Firefox、Safari、Opera所接受。2013年开始,这个头被RFC接受,成为正式的HTTP头的字段,并归入规范[RFC7034]。
网站所有者通过设置这个HTTP头来告诉浏览器应当使用的框架策略。这字段的可选值有DENY、SAMEORIGIN以及ALLOW-FROM。这三个分别代表拒绝网站在框架中(DENY),网站只能被同源的网站中的框架加载(SAMEORIGIN),网站可以被指定允许的网站的框架加载(ALLOW-FROM)。没有设置这个字段时,默认可被其他任意网站加载。
例如google主站设置了X-Frame-Option:SAMEORIGIN,这代表它仅可被它同源的站点的IFRAME加载。
10 HTML5的安全问题
HTML5中重新定义了一些元素的规范,例如<cite>和<menu>在HTML5中赋予了标准含义。然后新功能也会伴随新威胁。
10.1 基于FullScreen和Notification API的新型钓鱼攻击
常规的钓鱼网站大多依靠程序或模板生成,攻击者只要进行一次傻瓜式的“填写信息-点击按钮”操作即可生成钓鱼代码。然后,攻击者将文件上传到自己的服务器上,受害者访问并提交表单后,填写的数据会被记录下来。这样,就完成了钓鱼过程。
要识别此类钓鱼网站十分简单,那便是仔细检查地址栏显示的网址以及页面属性中显示的地址是否正是你要访问的网址。或者,不妨在浏览器中打开钓鱼过滤,例如IE就提供了SmartScreen Filter来过滤钓鱼网站,也可以安装安全软件,凭借它们的防护功能来防御此类攻击。
但是HTML5提供的强大功能让攻击者又有其他的选择途径,例如Feross Aboukhadijeh提出的使用FullScreen API即可进行完整的界面伪装。在早期版本的Safari中,弹出的全屏窗口完全没有提示,这将让攻击者的攻击更容易得逞。
10.2 组合API后可能导致的安全问题
一些新API单个使用时看似危害不大,但是如果攻击者可以通过某种方式获取用户信息,并组合多个API,那么也是有一些危害的。例如,HTML5提供了音频相关的API,因此我们可以构造一个页面,使用计算机的麦克风录取声音,下载github上的Recorder.js的代码并布置到本地。访问后,我们可以发现浏览器提示该网页需要使用麦克风。如果用户点击允许按钮,浏览器将会录下麦克风传入的声音。
只是录音可能危害看起来并不是多大,如果攻击者取得用户声音之后,再通过WebSocket API将声音实时传给服务器,那么服务器将相当于对用户的麦克风做了实时监听。
现在的浏览器对这些需要权限的内容都做了较为明显的提示,浏览器首先请求了用户的许可,并在录音之后的Tab上显示出了明显的红点符号,表示当前页面正在获取麦克风信息。因此,当我们日常使用的时候,对一些不熟悉的网站弹出的提示不要轻易地点击允许,而应该养成优先禁止,仅在有需求的时候授予权限的习惯。
10.3 浮层广告
不少软件采用推广分成制度,软件厂商的出发点通常都是好的,软件厂商通常认为提供推广的人应当明确告知用户产品特色并吸引用户安装。软件的推广安装大多数是按新装机器收费的,如果推广商遵守发布商的规定正常推广,按行为收费的广告的转化率应当是相当低的。即访问网站的人中最终决定安装占比很低。
10/13 首页 上一页 8 9 10 11 12 13 下一页 尾页