CSRF漏洞及防御

本文详细介绍了CSRF(跨站请求伪造)的原理、常见payload实现方式、判断网站是否存在漏洞的方法,以及如何通过Referer字段、token验证和验证码等手段进行防御。
摘要由CSDN通过智能技术生成

一,什么是CSRF

CSRF(Cross-Site Request Forgery)是一种网络安全漏洞,攻击者利用用户已经认证过的会话来执行未经用户授权的操作。攻击者会诱使用户在受信任的网站上执行恶意操作,从而利用用户的身份来发送恶意请求。这种攻击通常通过在受害者浏览器中注入恶意代码或链接来实施。

CSRF攻击的目标是利用用户在目标网站上已经建立的会话,来执行一些可能危害用户的操作,比如更改用户密码、发送恶意邮件等。

CSRF攻击的危害性很大,因此开发人员和网站管理员需要注意并采取相应的措施来保护用户的信息安全。

CSRF实现的流程;

二,CSRF分析

1,CSRF漏洞的危害

  1. 修改账户信息
  2. 利用管理员账号,上传木马文件
  3. 传播蠕虫病毒(点击、扩散、点击……)
  4. 和其他攻击手段配合,实现攻击,比如XSS、SQL注入

2,常见的CSRFpayload

(1),通过图片的img src属性,自动加载,发起GET请求

使用img标签的src属性;

<img
src=
"http://xxxxxx?nameid=xxx&amount=xxx" width="0" height="0">

(2),构建一个超链接,用户点击以后,发起GET请

使用a标签的href属性;

<a
href=
"http://xxxxxx?amount=1000&to=jiangang" taget="_blank">xxx<a/>

(3),通过提交隐藏的表单,用户点击,自动提交,发起POST请求

<form action=
"http://xxxxxx" method=POST>
<input type="hidden" name="account" value="xiaoming" />
<input type="hidden" name="amount" value="1000" />
<input type="hidden" name="to" value="jiangang" />
</form>
<script> document.forms[0].submit(); </script>

三,CSRF漏洞的判断

1,如何判断一个网站是否含有CSRF漏洞;

是否可以从第三方接口直接调用;

2,如何对接口进行检测;

抓取正常通信的包,再次请求;

3,自动化的检测工具;

(1),burpsuite 的内置模块;

抓包之后使用内置的模块生成;

(2),CSRFTester(半自动化的工具);

(3),各种的云安全厂商;

四,SCRF漏洞的防御

1,对请求进行区分(来自前端页面还是第三方网站)

(1),Referer字段;

HTTP协议请求头的Referer字段用于指示当前请求的来源页面的URL(跟踪);这个字段可以帮助服务器识别用户是从哪个页面跳转过来的,有助于进行统计分析、安全验证等操作;Referer字段的格式通常是一个URL,示例如下:

Referer: https://www.example.com/page1

在实际的HTTP请求头中,Referer字段可能会包含更多的信息,如查询参数等。

这样就可以对请求进行区分;

缺点:HTTP的请求可以随意的修改;导致Referer字段被修改(伪造);

2,前端页面和伪造页面的差异性

在自己的页面中添加某些东西,使第三方的网站不可知,在请求到达后端服务器的时候进行匹配;

例如token字段的设立;

  1. 用户在输入用户名和密码进行登录的过程中,服务器下发随机token,并且将其保存在session中;
  2. 客户端将token存放在隐藏字段中;
  3. 客户端在登录状态下,每一次的访问都要携带;
  4. 服务器收到请求进行比较;
  5. 客户端退出登录,销毁token;

3,验证码及二次验证

使用验证码是一种有效的防御CSRF漏洞的方法之一。通过在表单中添加一个验证码字段,用户在提交表单时需要输入正确的验证码才能完成操作,从而增加了用户在网站上执行操作的验证过程,降低了CSRF攻击的成功率。

下面是使用验证码来防御CSRF漏洞的一般步骤:

  1. 在表单中添加一个验证码字段,通常是一个随机生成的验证码图片或文本。
  2. 用户在提交表单时需要输入正确的验证码才能完成操作。
  3. 后端服务器验证用户提交的验证码是否与生成的验证码匹配,只有匹配的情况下才继续处理用户的请求。
  4. 如果验证码不匹配或者用户未提供验证码,可以拒绝处理用户的请求或者要求用户重新输入验证码。

通过以上步骤,可以有效地增加用户在网站上执行操作的验证过程,从而减少CSRF攻击的成功率。

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_慕慕_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值