网络安全之CSRF&ClickJacking

<强>

CSRF的全名是跨站请求伪造,即跨站点请求伪站。

<强>

,,,很多* * *者伪造的请求之所以能在在服务器验证通过,是因为用户的浏览器成功发送了饼干的缘故。

,,,浏览器所持有的饼干分为两种:一种是“会话cookie”,又称“临时饼干”;另一种是“第三方饼”,也称“本”地饼干。

,,,两者的区别在于第三方饼干是服务器在set - Cookie时指定了到期时间,只有到了到期时间后饼干才会失效,所以这种饼干会保存在本地;而会话Cookie则没有指定到期时间,所以浏览器关闭后,会话Cookie就失效了。

,,,浏览器网站的过程中,若是一个网站设置了会话Cookie,那么在浏览器进程中的生命周期内,即使浏览器新打开了标签页,会话Cookie也都是有效的.Session饼干保存在浏览器进程的内存空间中,而第三方饼干则保存在本地。

,,,如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全原因,某些浏览器会阻止第三方饼干的发送。

,,,下面这个例子,演示了这一个过程:

,,,在http://www.a.com/cookie.php中,会给浏览器写入两个饼干:一个是会话Cookie,另一位第三方饼干。

& lt; ? php

,头(set - cookie: cookie1=123;);

,,

?在

,,,访问这个页面,发现浏览器同时接收(方向:收到第一次接收)了这两个饼干。

,,,这时再打开一个新的浏览器选项卡页,访问同一个域中的不同页面。因为新标签页在同一个浏览器进程中,因此会话Cookie将被发送(方向:第二次发送到服务器端)。

,,,此时在另外一个域中,有一个页面http://www.b.com/csrf-test.html,此页面构造了CSRF以访问www.a.com。

& lt; iframe, src=" http://www.a.com "比;& lt;/iframe>

,,,这时却发现,只能发送会话Cookie (Cookie: 123),而第三方饼干被禁止了。

,,,这是因为IE因为安全考虑,禁止了浏览器在& lt; img> & lt; iframe>, & lt; script> & lt;每日等标签中发送第三方饼干。但是firefox是允许发送第三方饼干的。

,,,在当前的主流浏览器中,默认会拦截第三方饼干的有:IE、Safari;不会拦截的有:Firefox、Opera, Chrome, Android等。

<强>

,,,P3P头是W3C制定的一项隐私的标准,全称是平台隐私偏好。

,,,如果网站返回给浏览器的HTTP头里包含P3P头,则在某种程度上说,将允许浏览器发送第三方Cookie,即使是在IE浏览器中。

<强>

<强>

<强>

<强>

<强>

,,点击劫持是一种视觉上的欺骗手段。* * *者使用一个透明的,不可见的iframe,覆盖在一个网页上,然后又是用户在该网页上操作。

,,常见的形式有:Flash点击劫持,图片覆盖* * *,拖拽劫持与数据窃取,触屏劫持

,,防御方式:

,,1、框架bustiong

,,,通常可以写一段JavaScript代码,以禁止iframe嵌套。这种方法叫帧bustiing。

,,2,X-Frame-Options

,,X-Frame-Option可以说是为了解决“点击劫持”而生的,它有三个可选值:

,,,,否认:浏览器会拒绝当前页面加载任何框架页面;

,,,,SAMEORIGIN:框架页面的地址只能为同源域名下的页面;

,,,,ALLOW-FROM产地:定义允许加载的页面地址。

,,除了X-Frame-Options之外,Firefox的“内容安全政策”以及Firefox的NoScript扩展也能够防御“点击劫持”。





网络安全之CSRF&ClickJacking