zoukankan      html  css  js  c++  java
  • 跨站点请求伪造(CSRF)

            CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

    一、浏览器的 Cookie 策略

            浏览器所持有的 Cookie 分为两种:一种是“Session Cookie”,又称“临时 Cookie”;另一种是“Third-party Cookie”,也成为“本地 Cookie”。

            两者的区别在于,Third-party Cookie 服务器在 Set-Cookie 时指定了 Expire 时间,只有到了 Expire 时间后 Cookie 才会失效,所以这种 Cookie 会保存在本地;而 Session Cookie 则没有指定 Expire 时间,所以浏览器关闭后,Session Cookie 就失效了。

            如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全问题,某些浏览器会阻止 Third-pary Cookie 的发送。

    二、CSRF 的防御

    1 验证码

    2 Referer Check

            Referer Check 在互联网中最常见的应用就是“防止图片盗链”。同理,Referer Check 也可以被用于检查请求是否来自合法的“源”。

    3 Anti CSRF Token

    三、CSRF 的本质

            CSRF 为什么能够攻击成功?其本质原因是重要操作的所有参数都是可以被攻击者猜测到的。

            在 URL 中,保持原参数不变,新增一个参数 Token。这个 Token 的值是随机的,不可预测。

            Token 需要同时放在表单和 Session 中。在提交请求时,服务器只需验证表单中的 Token,与用户 Session(或 Cookie)中的 Token 是否一致,如果一致,则认为是合法请求;如果不一致,或者有一个为空,则认为请求不合法,可能发生了 CSRF 攻击。

  • 相关阅读:
    抽奖代码
    org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after a
    Cannot add or update a child row: a foreign key constraint fails
    SyntaxError:identifier starts immediately after numeric literal
    too much recursion
    微信处理红包
    minerd
    minerd
    kill常用
    阿里云centos 6安装Nginx+PHP+MySQL
  • 原文地址:https://www.cnblogs.com/SyMind/p/8470132.html
Copyright © 2011-2022 走看看