首页 > 其他分享 >104.什么是CSRF攻击如何防范CSRF攻击

104.什么是CSRF攻击如何防范CSRF攻击

时间:2023-07-14 23:14:12浏览次数:70  
标签:请求 攻击 网站 cookie CSRF 服务器 104

104. 什么是 CSRF 攻击?如何防范 CSRF 攻击?

CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被
攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。

CSRF 攻击的本质是利用了 cookie 会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。

一般的 CSRF 攻击类型有三种:

第一种是 GET 类型的 CSRF 攻击,比如在网站中的一个 img 标签里构建一个请求,当用户打开这个网站的时候就会自动发起提
交。

第二种是 POST 类型的 CSRF 攻击,比如说构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单。

第三种是链接类型的 CSRF 攻击,比如说在 a 标签的 href 属性里构建一个请求,然后诱导用户去点击。

CSRF 可以用下面几种方法来防护:

第一种是同源检测的方法,服务器根据 http 请求头中 origin 或者 referer 信息来判断请求是否为允许访问的站点,从而对请求进行过滤。当 origin 或者 referer 信息都不存在的时候,直接阻止。这种方式的缺点是有些情况下 referer 可以被伪造。还有就是我们这种方法同时把搜索引擎的链接也给屏蔽了,所以一般网站会允许搜索引擎的页面请求,但是相应的页面请求这种请求方式也可能被攻击者给利用。

第二种方法是使用 CSRF Token 来进行验证,服务器向用户返回一个随机数 Token ,当网站再次发起请求时,在请求参数中加入服务器端返回的 token ,然后服务器对这个 token 进行验证。这种方法解决了使用 cookie 单一验证方式时,可能会被冒用的问题,但是这种方法存在一个缺点就是,我们需要给网站中的所有请求都添加上这个 token,操作比较繁琐。还有一个问题是一般不会只有一台网站服务器,如果我们的请求经过负载平衡转移到了其他的服务器,但是这个服务器的 session 中没有保留这个 token 的话,就没有办法验证了。这种情况我们可以通过改变 token 的构建方式来解决。

第三种方式使用双重 Cookie 验证的办法,服务器在用户访问网站页面时,向请求域名注入一个Cookie,内容为随机字符串,然后当用户再次向服务器发送请求的时候,从 cookie 中取出这个字符串,添加到 URL 参数中,然后服务器通过对 cookie 中的数据和参数中的数据进行比较,来进行验证。使用这种方式是利用了攻击者只能利用 cookie,但是不能访问获取 cookie 的特点。并且这种方法比 CSRF Token 的方法更加方便,并且不涉及到分布式访问的问题。这种方法的缺点是如果网站存在 XSS 漏洞的,那么这种方式会失效。同时这种方式不能做到子域名的隔离。

第四种方式是使用在设置 cookie 属性的时候设置 Samesite ,限制 cookie 不能作为被第三方使用,从而可以避免被攻击者利用。Samesite 一共有两种模式,一种是严格模式,在严格模式下 cookie 在任何情况下都不可能作为第三方 Cookie 使用,在宽松模式下,cookie 可以被请求是 GET 请求,且会发生页面跳转的请求所使用。

详细资料可以参考:
《前端安全系列之二:如何防止 CSRF 攻击?》
《[ HTTP 趣谈] origin, referer 和 host 区别》

标签:请求,攻击,网站,cookie,CSRF,服务器,104
From: https://www.cnblogs.com/zhuoss/p/17555290.html

相关文章

  • Json.NET反序列化漏洞生成Ysoserial攻击Payload
    Ysoserial.Net只提供序列化之后的Payload主体,具体执行的命令从外部输入,实现代码清单如下Stringpayload=@"{    '$type':'System.Windows.Data.ObjectDataProvider,PresentationFramework,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35',  ......
  • mongodb报错Sort exceeded memory limit of 104857600 bytes
    mongodb运行过程中,遇到错误信息:2023-07-14T09:29:33.853ERRFailedtoQueryBsPoolUnivStaterror="(QueryExceededMemoryLimitNoDiskUseAllowed)Executorerrorduringfindcommand::causedby::Sortexceededmemorylimitof104857600bytes,butdidnotoptinto......
  • 【题解】CF gym 104337 G. Guess the Polynomial
    statement:https://codeforces.com/gym/104337/problem/G。即求\(f(x)=\sum\limits_{i=0}^{p-2}a_ix^i\),其中只有不超过\(n\)个\(a_i\)非\(0\)。记:\[\begin{aligned}A_{n}^{k}&=\sum_{i\equivk\pmod{n}}a_i=\frac{1}{n}\sum_{i=0}^{n-1}f(\omega_{n}^{......
  • 「Python」参数化查询防止SQL注入攻击
    importpymysql#1.链接mysqlconn=pymysql.connect(user='root',password="123",host='127.0.0.1',database='cars'#需要去数据库创建表,无法在此创建) #2.获取一个游标cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#返回的查询结果以字典的形式表示,其......
  • nvm安装node报错Get "https://nodejs.org/dist/latest/SHASUMS256.txt": dial tcp 104
    windows上通过nvm管理node版本,在本地安装了nvm后,通过nvm安装node,报错了,信息:Couldnotretrievehttps://nodejs.org/dist/latest/SHASUMS256.txt.Gethttps://nodejs.org/dist/latest/SHASUMS256.txt:dialtcp104.20.23.46:443:i/otimeout 有了这样的信息,我......
  • 104.C++中标准库是什么?
    104.C++中标准库是什么?1.C++标准库可以分为两部分:1.1标准函数库:这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自C语言。输入/输出I/O、字符串和字符处理、数学、时间、日期和本地化、动态分配、其他、宽字符函数*输入输出流:`<iostream>`头文件中的......
  • DPI-1047Python的exe无法执行问题
    一、序打包运行的exe在其他设备上出现DPI-1047:Cannotlocatea64-bitOracleClientlibrary:Thespecifiedmodulecouldnotbefound.二、解决方法1、安装OracleInstantClient2、配置系统环境Path中添加解压路径如(C:\Users\Administrator\Desktop\instantclient......
  • web安全学习日志---xss漏洞(跨站脚本攻击)
    1.反射性xss(reflacted) 仅执行一次,非持久型。主要存在于攻击者将恶意脚本附加到url的参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。利用场景:直接插入JS代码,修改url参数  攻<script>alert('hack')</script>防$name=str_replac......
  • xss跨站脚本攻击
    xss跨站脚本攻击2023年3月29日8:26又叫CSS(CrossSiteScript),跨站脚本攻击原理:指的是恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入其中Web里面的JS代码会被执行,从而达到恶意的特殊目的xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用......
  • nginx配置头 防止xss攻击
    server{ listen8080; server_namelocalhost; add_headerX-Frame-Options"SAMEORIGIN"; add_headerX-XSS-Protection"1;mode=block"always; add_headerX-Content-Type-Options"nosniff"always; add_headerX-Permitted-Cross......