CSRF的第一次认识

CSRF 全名 Cross Site Request Forgery,中文名称为跨站点请求伪造。

  类同于XSS一样靠攻击者自我构造恶意URL链接,不像XSS那样存在持久型,不过破坏力也很大。

浏览器cookie策略会影响CSRF的攻击效果。

  浏览器持有的cookie分为两种:一种是session cookie ,又称为 临时cookie;另一种是 third-party cookie,又称为 本地cookie。

  某些浏览器会限制 本地cookie 的发送,因而使CSRF攻击变的无效。

  但是若CSRF攻击的目标不需要使用cookie,浏览器cookie策略也无关紧要了。

P3P头

  P3P header是为了加强用户隐私而提出的标准,不过这个标准把浏览器的cookie策略打乱了。

  导致了很多 本地cookie 能跨域发送,因此可能造成一定的危险性。

GET?POST?

  CSRF存在在恶意的URL中,但是通过修改GET请求为POST请求的方法不能很好的过滤CSRF攻击。

  例如:在一个页面中构造一个form表单,使用javascript自动提交这个表单。

  <form action="http://www.a.com/register" id="register" method="POST">

  <input type=text name="user" value="" />

  <input type=password name"pass" value=""/>

  <input type=submit name="sub" value="sub"/>

  </form>

  <script>

  var f = document.getElementById("register");

  f.inputs[0].value = "test";

  f.inputs[1].value = "password";

  f.submit();

  </scrpt>

  攻击者可以将这个页面隐藏在一个不可见的iframe窗口中,那么整个提交表单的过程对用户来说也是不可见的了。

CSRF的防御

  1:验证码

  2:referer check (检查请求是否来自合法的 域)

  3:anti csrf token (主要方法)

    Token使用原则:根据 不可预测性原则 ,通过使用 Token来防御CSRF,使用Token时,要注意Token的保密性和随机性。

 

posted @ 2012-08-02 22:17  Lxsec  阅读(380)  评论(0编辑  收藏  举报