asp.net使用了token来防止CRSF攻击

前台:

使用@Html.AntiForgeryToken();
浏览器里面被存了一个cookie值,这个值是asp.net存给浏览器的,是readonly的属性,页面提交的时候,cookie和表单hidden的值一起提交,后台比较这两个值来判断请求是否来自于同一个浏览器

后台

使用[ValidateAntiForgeryToken]属性来验证Token

关于Token

它就是一个有意义的数字或者对象,要保证唯一性,可以自定义它的对象结构,加密,最简单的就是直接生成一个guid,,可以参考AntiforgeryToken的代码来设计Token的源码

 在Web安全领域,跨站脚本攻击时最为常见的一种攻击形式,也是长久以来的一个老大难问题,而本文将向读者介绍的是一种用以缓解这种压力的技术,即HTTP-onlycookie。
  在Web安全领域,跨站脚本攻击时最为常见的一种攻击形式,也是长久以来的一个老大难问题,而本文将向读者介绍的是一种用以缓解这种压力的技术,即HTTP-onlycookie。
  我们首先对HTTP-onlycookie和跨站脚本攻击做了简单的解释,然后详细说明了如何利用HTTP-onlycookie来保护敏感数据,最后介绍了实现HTTP-onlycookie时确定浏览器版本的具体问题。
  一、XSS与HTTP-only Cookie简介
  跨站点脚本攻击是困扰Web服务器安全的常见问题之一。跨站点脚本攻击是一种服务器端的安全漏洞,常见于当把用户的输入作为HTML提交时,服务器端没有进行适当的过滤所致。跨站点脚本攻击可能引起泄漏Web站点用户的敏感信息。为了降低跨站点脚本攻击的风险,微软公司的InternetExplorer 6 SP1引入了一项新的特性。
  这个特性是为Cookie提供了一个新属性,用以阻止客户端脚本访问Cookie。
  像这样具有该属性的cookie被称为HTTP-onlycookie。包含在HTTP-onlycookie中的任何信息暴露给黑客或者恶意网站的几率将会大大降低。下面是设置HTTP-onlycookie的一个报头的示例:
  Set-Cookie: USER=123; expires=Wednesday, 09-Nov-99 23:12:40GMT;HttpOnly
  上面我们介绍了HTTP-onlyCookie;下面我们开始向读者介绍跨站点脚本攻击、允许通过脚本访问的cookie所带来的潜在危险以及如何通过HTTP-only来降低跨站点脚本攻击的风险。
  跨站点脚本攻击是一种服务器端常见的安全漏洞,它使得黑客可以欺骗用户从而导致用户在某个Web站点上的敏感信息的泄漏。下面通过一个简单的示例来解释一个跨站点脚本攻击的相关步骤。
  二、跨站点脚本攻击示例
  为了解释跨站点脚本攻击是如何被黑客利用的,我们假想了下面的一个例子:
  A证券公司运行了一个Web站点,该站点允许您跟踪某股票的最新价格。为了提高用户体验,登录A证券公司的Web站点之后,你将被重定向到www.azhengquan.com/default.asp?name= < t >evilt()< / t>张三,并且有一个服务器端脚本生成一个欢迎页面,内容为“欢迎您回来,张三!”。
  你的股票数据被存放在一个数据库中,并且Web站点会在你的计算机上放置一个cookie,其中包含了对这个数据库非常重要的数据。每当你访问A证券公司站点时,浏览器都会自动发送该cookie。
  一个黑客发现A证券公司公司的Web站点存在一个跨站点脚本攻击缺陷,所以他决定要利用这点来收集你所持股票的名称等敏感信息。黑客会您你发送一封电子邮件,声称您中奖了,并且需要点击某个链接如“点击这里”来领取奖品。注意,该链接将超链接到www.azhengquan.com/default.asp?name=evilt()< / t >当您点击这个链接,映入眼帘您的将是“欢迎您回来!”——等等,您的姓名哪里去了?事实上,单击电子邮件内的链接之后,你实际上就是在通知A证券公司公司的Web站点,你的姓名是< t> evilt()。Web服务器把用这个“名字”生成的HTML返回给你,但是你的浏览器会把这个“名字”作为脚本代码解释,脚本执行后便出现了我们前面看到的一幕。一般情况下,支持客户端脚本是浏览器的典型功能之一。如果这个脚本命令浏览器向黑客的计算机发回一个cookie,即使这个cookie包含有您的股票的有关信息,您的浏览器也会老老实实地执行。最后,那些来自A证券公司的Web站点的指令获取了那个包含敏感信息的cookie。
  下面是跨站脚本攻击的示意图,它详细的展示了攻击的五个步骤。首先,用户点击了黑客发来的电子邮件中的一个嵌入的链接(第1步)。由于跨站点脚本攻击缺陷的原因,这样会导致用户的浏览器向Web站点发送一个请求(第2步);服务器端根据该请求会生成一个包含恶意脚本的响应,并将其发回给用户的浏览器(第3步)。当用户的机器执行返回的恶意代码时(第4步),就会将用户的敏感数据发送给黑客的计算机(第5步)。
  图1
  我们可以看到,这个过程只需要用户单击了一个链接,然后就会有指令发送给Web服务器,然后Web服务器生成一个嵌入恶意脚本的网页;浏览器运行这个来自受信任的源的脚本,却致使信息泄漏给黑客的计算机。跨站点脚本攻击有许多不同的形式,这里只是其中的一种。
  三、用HTTP-only Cookie保护数据
  为了缓解跨站点脚本攻击带来的信息泄露风险,Internet Explorer6SP1为Cookie引入了一个新属性。这个属性规定,不许通过脚本访问cookie。使用HTTP-onlyCookie后,Web站点就能排除cookie中的敏感信息被发送给黑客的计算机或者使用脚本的Web站点的可能性。
  Cookie通常是作为HTTP应答头发送给客户端的,下面的例子展示了相应的语法(注意,HttpOnly属性对大小写不敏感):
  Set-Cookie: =[; =]
  [; expires=][; domain=]
  [; path=][; secure][; HttpOnly]
  即使应答头中含有HttpOnly属性,当用户浏览有效域中的站点时,这个cookie仍会被自动发送。但是,却不能够在InternetExplorer6SP1中使用脚本来访问该cookie,即使起初建立该cookie的那个Web站点也不例外。这意味着,即使存在跨站点脚本攻击缺陷,并且用户被骗点击了利用该漏洞的链接,InternetExplorer也不会将该cookie发送给任何第三方。这样的话,就保证了信息的安全。
  注意,为了降低跨站点脚本攻击带来的损害,通常需要将HTTP-onlyCookie和其他技术组合使用。如果单独使用的话,它无法全面抵御跨站点脚本攻击。
  四、支持HTTP-only Cookie的浏览器
  如果Web 站点为不支持HTTP-onlyCookie的浏览器建立了一个HTTP-onlycookie的话,那么该cookie不是被忽略就是被降级为普通的可以通过脚本访问的cookie。这还是会导致信息容易被泄露。
  对于公司内部网中的web页面,管理员可以要求所有用户都是由支持HTTP-onlyCookie的浏览器,这样能保证信息不会由于跨站点脚本攻击缺陷而泄露。
  对于公共Web站点,由于需要支持各种各样的浏览器,这时可以考虑使用客户端脚本来确定不同访问者所使用的浏览器的版本。Web站点可以通过向支持~的浏览器发送敏感信息以减轻跨站点脚本攻击对Cookie的威胁。对于那些使用不支持HTTP-onlyCookie的浏览器的访问者,可以限制为其提供的信息或功能,并要求升级他们的软件。
  当确定Internet Explorer的版本时,重要的是记住Internet Explorer 6SP1的用户代理字符串跟InternetExplorer6的用户代理字符串是一样的。客户端脚本还必须使用navigator对象的appMinorVersion属性检测主版本号,这样才能确定出客户端是否安装了InternetExplorer6 SP1。
  五、小结
  在Web安全领域,跨站脚本攻击时最为常见的一种攻击形式,也是长久以来的一个老大难问题,而本文将向读者介绍一种用以缓解这种压力的技术,即HTTP-onlycookie。我们首先对HTTP-onlycookie和跨站脚本攻击做了简单的解释,然后详细说明了如何利用HTTP-onlycookie来保护敏感数据,最后介绍了实现HTTP-onlycookie时确定浏览器版本的具体问题。

asp.net--CRSF的更多相关文章

  1. CRSF在ASP.NET CORE MVC 的处理方式

    https://www.cnblogs.com/catcher1994/p/6720212.html

  2. ASP.NET Core 之 Identity 入门(一)

    前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证,总体来说的话,没有MVC 5 里面那么复杂,因为在MVC 5里面引入了OW ...

  3. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  4. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  5. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  7. ASP.NET_各个币种之间的汇率转换(实时)使用Yahoo汇率。

    近期开发支付平台的时候有运用到各国的实时汇率之间的转换问题,于是在往上找了很多相关资料,以下就是一些参考网址: 1.提供API接口的网站:https://www.showapi.com:这个网站有提供 ...

  8. ASP.NET Core MVC/WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  9. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

随机推荐

  1. Linux C语言头文件搜索路径

    本文介绍在linux中头文件的搜索路径,也就是说你通过include指定的头文件,linux下的gcc编译器它是怎么找到它的呢.在此之前,先了解一个基本概念. 头文件是一种文本文件,使用文本编辑器将代 ...

  2. P2831 愤怒的小鸟 状压dp

    这个题主要是预处理比较复杂,先枚举打每只鸟用的抛物线,然后找是否有一个抛物线经过两只鸟,然后就没了. 题干: 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上 ...

  3. diff比较两个文件的差异

    1.diff -ruN a.txt b.txt>patch.txt比较第二个文件与第一个文件相比的变化,并将变化添加到patch.txt文件中,-表示删除的行,+表示添加的行 2.下面的,“&l ...

  4. autofac的小知识点

    autofac 注入中i遇到的泛型传参问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  5. python之路——常用模块

    阅读目录 认识模块 什么是模块 模块的导入和使用 常用模块一 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二 hashlib模块 con ...

  6. C#将文件压缩成一个文件流,供前端下载

    直接上代码供大家参考... 前端页面就是一个下载的Button.. <body> <form id="form1" runat="server" ...

  7. MYSQL 代码删除和添加表格列方法

    一个表格建立后用代码删除或添加列: -- 删除列alter table teacher drop column create_time;-- 添加列alter table teacher add co ...

  8. 百鸡百钱===百马百担====for循环嵌套

    package com.zuoye.test;//百鸡百钱5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡.public class Baiji { public static voi ...

  9. C#调用FFMPEG实现桌面录制(视频+音频+生成本地文件)

    不得不说FFMPEG真是个神奇的玩意,所接触的部分不过万一.网上有个很火的例子是c++方面的,当然这个功能还是用c++来实现比较妥当. 然而我不会c++ 因为我的功能需求比较简单,只要实现基本的录制就 ...

  10. halcon 模板匹配 -- create_shape_model

    create_shape_model(Template : : //reduce_domain后的模板图像 NumLevels,//金字塔的层数,可设为“auto”或0—10的整数 AngleStar ...