初步认识csrf 跨站伪造请求攻击

  1. 什么是跨站伪造请求攻击?

    我自己的理解:用户A用浏览器访问量一个存在漏洞的网站B,同时A又访问了恶意网站C,假设用户A在B网站上进行了一次交易,C网站上有个<img src="A网站的交易地址"/>的html片段,那么此时用户A 的浏览器就会向B网站的交易链接发送请求,由于A已经在B网站登录,所以B网站处理的这个请求,但是这个请求并非用户A自己行为发送的,但是B网站无法判别是否是用户主动发送,所以造成攻击!可以借助这张图片来理解

    该图取自hyddd的博客    hyddd的博客--《浅谈CSRF攻击方式》

  2. 如何防护?

    在服务器端防御,主要做法是在服务器端为每个用户的cookie设置一个伪随机数

    1. 生成一个伪随机数放入cookie,然后同时将这个数作为表单的一个隐藏字段写入html页面后提交上来验证
    2. 为表单设置验证码
    3. 当浏览器同时打开多个不同的表单的时候,服务器会创建多个随机数,最后一个表单所对应的随机数会覆盖之前的表单的随机数,此时只能提交最后打开的那一个表单,所以应该要避免这种情况,所以应该为每个表单的沿着随机数存放在每个独立的地方
  3. 参考: hyddd的博客--《浅谈CSRF攻击方式》
时间: 2024-12-19 07:13:38

初步认识csrf 跨站伪造请求攻击的相关文章

防御CSRF的方法有哪些(一) HTTP 头中自定义属性并验证 CSRF跨站域请求伪造攻击

CSRF (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作,有很大的危害性. CSRF 攻击实例 CSRF 攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在并未授权的情况下执行在权限保护之下的操作. 比如说,受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求 http://bank.example

ASP.NET-跨站伪造请求CSRF

通过属性来防止跨站伪造请求 后台的controller里面加上 [ValidateAntiForgeryToken] 来自为知笔记(Wiz)

CSRF(跨站请求伪造攻击)漏洞详解

Cross-Site Request Forgery(CSRF),中文一般译作跨站点 请求伪造.经常入选owasp漏洞列表Top10,在当前web漏洞排行中,与XSS和SQL注入并列前三.与前两者相比,CSRF相对来说受到的关注要小很多,但是危害却非常大. 通常情况下,有三种方法被广泛用来防御CSRF攻击:验证token,验证HTTP请求的Referer,还有验证XMLHttpRequests里的自定义header.鉴于种种原因,这三种方法都不是那么完美,各有利弊. 二 CSRF的分类 在跨站请

安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御

安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御 本篇继续对于安全性测试话题,结合DVWA进行研习. CSRF(Cross-site request forgery):跨站请求伪造 1. 跨站请求伪造攻击 CSRF则通过伪装成受信任用户的请求来利用受信任的网站,诱使用户使用攻击性网站,从而达到直接劫持用户会话的目的. 由于现在的主流浏览器比如火狐和谷歌,都倾向于使用单个进程来管理用户会话(比如我们在FF和Chrome中,当要访问一个新页面时,通常是通过新增浏览器页面来达到的,而不是新开一

理解CSRF(跨站请求伪造)

理解CSRF(跨站请求伪造) 原文出处Understanding CSRF 对于Express团队的csrf模块和csurf模块的加密函数的用法我们经常有一些在意. 这些在意是莫须有的,因为他们不了解CSRF token是如何工作的. 下面快速过一遍! 读过后还有疑问?希望告诉我们错误?请开一个issue! 一个CSRF攻击是如何工作的? 在他们的钓鱼站点,攻击者可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求: <form action="https://my.site.c

Django框架(十六)-- 中间件、CSRF跨站请求伪造

一.什么是中间件 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出 二.中间件的作用 如果你想修改请求,例如被传送到view中的HttpRequest对象. 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现. 可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现. Django默认的中间件:(在django项目的settings模块中,有一个 MIDDLE

第二百七十一节,Tornado框架-CSRF防止跨站post请求伪造

Tornado框架-CSRF防止跨站post请求伪造 CSRF是什么 CSRF是用来在post请求时做请求验证的,防止跨站post请求伪造 当用户访问一个表单页面时,会自动在表单添加一个隐藏的input标签,name="_xsrf",value="等于一个密串" 当用户post请求提交数据时,会将_xsrf的密串提交到后台,后台会判断这个密串存在就允许提交数据,否则不允许提交 进行CSRF验证只需要两步 1.在框架配置字典里开启CSRF验证,开启后会自动接收post

Ajax--参数,csrf跨站请求伪造,serialize(),上传文件formdata

https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js. 一:参数,processData,contentType,traditional,dataType ######################------------data---------################ data: 当前ajax请求要携带的数据,是一个json的object对象,ajax方法就会默认地把它编码成某种格式 (urlencoded:?a=

ajax向Django前后端提交请求和CSRF跨站请求伪造

1.ajax登录示例 urls.py from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login_ajax/$', views.login_ajax, name='login_ajax'), url(r'^index/$', views.index, n