你的位置:首页 > 软件开发 > ASP.net > step_by_step_CSRF/ XSRF_问题描述

step_by_step_CSRF/ XSRF_问题描述

发布时间:2016-09-14 15:00:17
接触Asp.net boilerplate 一段时间,一次同事将他的代码添加到zero项目模板中,他将路由配置成他的页面,目的是要让zero项目登录成功之后跳转到他的页面,可是通过fiddler监视请求报了一个错误后来得知CSRF,翻阅下ABP Documents,了解下   ...

  接触Asp.net boilerplate 一段时间,一次同事将他的代码添加到zero项目模板中,他将路由配置成他的页面,目的是要让zero项目登录成功之后跳转到他的页面,可是通过fiddler监视请求报了一个错误

step_by_step_CSRF/ XSRF_问题描述

后来得知CSRF,翻阅下ABP Documents,了解下

  介绍

(CSRF)跨站点请求伪造 是一种恶意攻击,一个恶意网站,电子邮件,博客,或者应用程序导致一个已认证的用户在受信任的站点上执行一个不安全的操作(OWget='_blank'>ASP).

这里也简要的介绍了它在ASP.NET WEBAPI下如何实现

ABP架构尽可能多的去简化和自动化的完成CSRF防护,启动模板自带预定义配置和开箱即用,在本文中,我们将解释它是如何集成到ASP.NET平台并且了解它是如何工作的。

  HTTP动词

通常情况下,我们不需要保护GET,HEAD,OPTIONS和TRACE 这些HTTP操作,因为他们不会改变数据库,然而ABP假设(仅仅对POST,PUT,PATCH和DELETE这些HTTP动词进行保护),您也可以通过在文档中被定义的特性更改这一行为

ASP.NET MVC

特征

  正如你了解的那样,ASP.NET有它自己内置的防护系统,但是它有一些不足

  >在被保护的所有的ACTION上必须添加 ValidateAntiForgeryToken 注解,这样我们可能忘记在这些方法上添加此注解。

  >ValidateAntiForgeryToken 注解仅是检查表单的 _RequestVerificationToken 字段,这使得很难或者是不可能使用AJAX请求,尤其是如果你发送的请求的Content-Type 为 application/json,在AJAX中这通常是很常见的请求头。

  >这样在javascript代码中很难访问验证token(特别是如果你在.cshtml文件中不写javascript代码),在我们的AJAX请求中需要访问它

  >尽管我们用javascript可以访问到token,但是我们要为每次请求手动添加请求报文头

ABP做了以下的事情以应对这些困难

  >无需为POST,PUT,PATCH,DELETE添加 ValidateAniForgeryToken 注解,因为它们是自动的被保护(通过 AbpAntiForgeryMvcFilter),大多数情况下 自动保护 已经足够了,反之你也可以通过 DisableAbpAntiForgeryTokenValidation 注解 去禁用一个Action或者一个Controller,你也可以通过 ValidateAbpAntiForgeryToken 注解去启用一个Action或者一个Controller。

  > AbpAntiForgeryMvcFilter 除了表单字段之外还会检查请求头中的token,因此我们可以很容易的在AJAX请求中使用请求伪造保护。

  >提供了 abp.security.antiForgery.getToken()方法用javascript获取token ,甚至你不需要使用它。

  >为所有的AJAX请求头中自动的添加anti forgery token

因此,他几乎无缝协作。

整合

项目启动模板已经集成了开箱即用的CSRF防护,如果你要手动将它添加到你的项目中(也许你想要在创建项目之前添加它),下边将提供向导

模板视图

我们应该将以下代码添加到模板视图中

@{ SetAntiForgeryCookie(); }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:step_by_step_CSRF/ XSRF_问题描述

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录