|
概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题。本篇主要包括以下几个内容 : 1.认证 2.授权 3.XSS跨站脚本攻击 4.跨站请求伪造 认证 所谓认证,简单的来说就是验证一个用户的身份。这取决于我们开发的站点的类型,是否允许匿名访问,是否是属于管理员或者其它角色的用户等等。也就是说我们的整个程序或者某些功能是针对某些特定的用户开发的,那么我们可能就要进行认证来确定用户的身份。需要注意的是,认证与授权是是完全不一样的概念,我们要区别对待。打个比方,在ASP.NET MVC里面允许某一类用户访问某个Action就是授权。 ASP.NET MVC中主要有两种认证机制 1.Forms 认证 2.Windows 认证 Forms 认证 从字面上我们就可以得到一些信息,基于表单的认证提供给用户一个表单可以输入用户名和密码,然后我们可以在我们的程序中写自己的逻辑去验证这些信息。ASP.NET MVC为Forms认证提供了很多支持,并且有很强自定义性。从通过表单登录到用户信息存储在什么地方,到怎么样去验证这些用户信息。Forms认证默认是依靠cookie技术实现的,一旦某个用户登录站点,那么用户所使用的这个浏览器就会得到一个cookie并且在后面所有与这个站点的其它请求中都会将这个cookie包含在http的头中。ASP.NET能够检测到这个cookie,这个cookie中包含了用户的认证信息,那么后面就不需要再重复的认证用户了。 Windows认证 Windows 认证也就是大家熟悉的集成身份认证,因为它使用了集成在Windows操作系统中的用户组件来认证用户。一旦某个用户登录到域中,Windows能够在应用程序中自动认证他们。Windows认证一般在企业局域网内比较常用,一般企业局域网中所有的用户都需要用域身份来登录,这个有点像单点登录的体验,一旦进入域中就可以就可以很方便的同时登录域内的其它应用程序。 配置Forms认证 首先我们需要更改web.config中的authentication结点。
这个配置信息很简单,首先我们要使用的authentication类型是Forms认证。通过loginUrl指定我们认证用户的页面。这个Account Controller和 Login View还有一些允许用户注册的View都被ASP.NET MVC的internet模板默认实现了。我们可以轻而易举在在ASP.NET MVC中实现Forms认证。 打开Visual Studio 2010 > New Project > Select ASP.NET MVC 4 Web Application 点击确认。
然后选择Internet Application点击确认,Forms认证所需要的Controller 和View等等都会默认包含在我们的项目里面了。
Authorize 属性
Authorize不关注我们如何认证用户,我们既可以用Forms认证也可以用Windows认证。Authorize会去检测当前用户是否有身份信息。如果我们在Index上加上Authorize属性那么匿名用户就不能访问我们的Index Action了。他们会被跳转到Account/Login,也就是我们上面在web.config中配置的loginUrl。 如何配置Windows认证 和Forms认证一样,首先我们需要更改一下web.config中的authentication结点。
然后同样地,应用Authorize属性到我们的Index Action上。
我们可以将Authorize应用到一个单独的Action上,也可以应用到一个Controller上。当我们在某一个Controller上应用Authorize属性时,也就意味着这个Controller下所有的Action都必须是经过认证的用户才允许访问 。 如果使用IIS Express的话,我们需要更改配置信息来启用Windows认证。否则我们就会得到以下错误页面。
我们可以到IIS Express的配置中去启用Windows认证,打开Windows Explorer进入我的文档> IIS Express > config > applicationhost.config。然后将windowsAuthentication enabled设置为true。
然后我们就可以拿到一些用户的信息。
授权 授权允许我们传递一些参数去设置规则,我们可以告诉Authroize属性只有某些具体用户才可以访问某个Action。
同时 ,我们还可以为Authorize属性指定 Roles。这些Roles默认匹配到我们web服务器的Windows Group或者是域管理器里面的用户组。
在Forms认证中, ASP.NET为我们提供了一个角色管理器(role provider)我们可以通过它来方便和将我们的角色信息存储到SQL中,并且进行管理。我们只需要点击一个按钮即可:
点击上面这个按钮之后,它会帮我们运行ASP.NET configuration tool。这个站点只能在本地运行,我们可以在这个站点管理我们的角色,这个站点默认使用的数据连接就是我们配置在web.config中的连接字符串。
XSS跨站脚本攻击 在web领域,有几个比较常见的安全隐患,其中一个比较流行的就是跨站脚本攻击。一些恶意的用户通过一些手段让我们的站点加载一些恶意的脚本,那么如果其它用户访问到这些脚本就有可能成为受害者。除了脚本,包括active-x控件,甚至一些恶意的Html都可以成为XSS的武器。XSS可以做到哪里事情 ? 1.窃取cookie 2.更改用户设置 3.下载恶意软件 4.更改内容 5.账户劫持 简单的说,我们可以通过XSS访问用户的个人信息以及身份信息。 XSS示例
这是一个简单的录入员工信息的页面,我们输入一些html代码然后保存页面。ASP.NET默认会去检测我们的request,发现类似html代码会直接拒绝我们的请求。
当然,有些时候我们需要允许用户输入html,那么只要在我们的Action上打上ValidateInput(false)即可。
这样我们就可以成功的提交 我们的请求了。
如上图所示,这样我们又遇到了另外一个问题。在ASP.NET MVC中razor默认会对所有输出进行html编码。这是ASP.NET MVC针对XSS攻击的另一道防火墙。通过为属性打上AllowHtml属性,我们可以允许某一个属性包含html的值,这样我们就可以移除Action上的ValidateInput属性。通过Html.Raw 我们可以将html输出到客户端。
Anti XSS library 如果我们允许用户输入html的话,有些人可能会尝试输入一些脚本 (不要说你没有想过在博客园输入一些脚本来玩玩?)
幸运的是,Microsoft为我们提供了一个组件,我们可以通过nugget或者Library Package Manager Console( Visual Studio > Tools > Library Package Manager > Package Manager Console 输入 Install-Package AntiXss回车 )
只需要简单的一句话,就可以移除所有的有害代码,是不是感觉又被Microsoft搞蠢了? CSRF跨站请求伪造 跨站请求伪造也是一种危险的主流攻击。试想一下,某个用户登录到网站想修改一些个人信息,如果服务器端使用了Forms认证,那么在这个用户登录之后就会得到一个包含身份信息的cookie并且在后面所有这个站点下的请求中传递。当然这个并没有错,毕竟如果每次都去验证用户名和密码是一次不小的开销,验证一次之后将登录信息保存到cookie中,至少在用户不关闭浏览器之前,我们不用再重新去验证用户。 安全隐患在哪里? 如果浏览器端依然保留着我的身份信息,那在我访问其他恶意的站点的时候。这些恶意的站点就可以自己封装一个表单并提交到我们的服务器,虽然这个请求时恶意站点伪造的,但是因为它带有用户的身份,所以服务器是会正常处理的。小到更改用户资料,大到转走用户的账户余额都成为可能。 所以我们在处理请求的时候,不仅仅需要验证用户身份信息,还需要确保发送数据的表单是由我们服务器产生的。这样就可以避免其他恶意用户伪造表单发送数据。 CSRF示例
这里有一段很常见的代码,通过Edit Action来编辑用户信息。我们已经为Edit 打上了Authorize属性,也就是说用户是需要登录才能访问这个Action的。从普通开发的角度来看,这个程序是不会有什么问题的,我们首先通过正常渠道添加了一个用户。
接下来,很雷很雷的事情发生了。你收到一封邮件说你中奖了,给了你一个链接,或者在某个网站上本身就嵌入了一些恶意代码,而你不幸手一抖,就点了。接下来结果有可能是这样滴。
你的数据很轻松就被篡改了。如果账号是有余额的,你就哭吧。来看看这个页面 是如何实现的。
非常的简单,我们只需要将form的action指向实际的action就可以了。这个页面一旦被加载,这个表单就会自动提交,那我们的数据就被黑了,一切都是那么的简单。 如何避免? ASP.NET MVC 为我们提供了Html.AntiForgeryToken() 方法,我们只需要在form中添加这句话。MVC 会为我们生成一个唯一标识放在form中的一个隐藏域中,该标识还会被存放到cookie中在客户端和服务器的请求中传输。另外我们要做的就是为我们的Action打上ValidateAntiForgeryToken的属性。
如果请求不包含这个cookie,那服务器就会拒绝这个请求,从而避免CSRF的攻击。
|
相关推荐
11、ASP.NET 安全漏洞与防护策略解析
本博客深入探讨了 ASP.NET 开发中的常见安全漏洞,如跨站请求伪造 (CSRF) 攻击和会话劫持,并提供了多种防护策略。内容涵盖 Cookie 存储与验证、CSRF 攻击原理及防范措施、会话机制的安全加固方法,以及实际案例分析和未来安全趋势的应对思路。通过代码示例和测试方法,帮助开发者全面理解和实施 ASP.NET 应用的安全防护措施。
ASP.NET 安全性
发布日期: 09/30/2004 | 更新日期: 09/30/2004浏览全部的安全性指导主题Microsoft Corporation本章内容ASP.NET 是开发本指南所讨论的分布式 Web 应用程序的重心。它提供丰富而且容易访问的安全能力级,从而方便了安全的 Web 应用程序的创建。ASP.NET 被设计成与 Internet Informat
源代码漏洞发现:Java与ASP.NET安全防护
本文深入探讨了在Java和ASP.NET平台上发现源代码漏洞的方法,详细介绍了关键API的使用、潜在的安全风险以及如何通过安全配置来防护这些漏洞。文章提供了实用的指导,帮助开发者识别和防止常见的安全问题。
【ASP.NET Core 基础知识】--安全性--防范常见攻击
文章通过介绍常见的网络安全威胁,如跨站脚本(XSS)、SQL注入、CSRF等,并提供了相应的防御机制和实践建议。文章首先明确了不同攻击类型的原理和风险,然后详细解释了在ASP.NET Core中如何应对这些攻击,包括输入验证、输出编码、Content Security Policy(CSP)等防御措施。此外,文章还强调了敏感数据泄露的严重性,并提出了相应的保护措施。总的来说,本文全面解析了ASP.NET Core中防范常见攻击的重要性和方法,为开发人员提供了有益的指导和实践经验。
一文带你完成ARMv8架构中的cache知识点
【摘要】 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处理器内核要复杂得多,其时钟速度可以快上几个数量级。但是,外部总线和内存设备的频率并没有扩大到同样的程度。有可能实现小块的片上SRAM,它可以以与内核相同的速度运行,但是与标准的DRAM块相比,这种RAM非常昂贵,因为后者的容量可以达到数千倍。在许多基于ARM处理器的系统中,访问外部存储器需要几十甚至几百个内核周期。 cache的技术背景 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处.
从零到一:TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南
本文详细介绍了TI AWR1843 Boost EVM与DCA1000 EVM的ADC数据采集实战指南,涵盖硬件连接、软件配置、固件烧录、雷达参数设置及数据处理等关键步骤。通过MATLAB等工具,开发者可高效实现毫米波雷达数据采集,适用于自动驾驶、工业检测等领域。
把ASP.NET安全与经典ASP和非ASP.NET URLs集成
【原文地址】Tip/Trick: Integrating ASP.NET Security with Classic ASP and Non-ASP.NET URLs 【原文发表日期】 Sunday, March 04, 2007 6:17 PM 别人经常问我的一个问题是,“我怎么能把ASP.NET安全与经典ASP和其他非ASP.NET URLs集成起来?” 具体地来说,他们想知道他们是否能把
T100服务端接口实战:从注册到日志排查的全链路开发指南
本文提供了一份T100服务端接口开发的全链路实战指南。从程序注册与框架签出开始,详细讲解了接口的数据结构设计、核心业务逻辑编写,到最终的部署上线与调用验证。文章重点分享了如何利用日志文件高效定位和排查接口问题,帮助开发者快速掌握T100接口开发的关键步骤与实用技巧。
ASP.NET的安全性
ASP.NET提供一个很健壮的安全系统,ASP.NET的安全性和性能有很深的关系,利用ASP.NET的安全机制可以从每个Web页面的顶端编写安全检查代码的工作解放出来,安全检查有核心的ASP.NET子系统完成。 当IIS收到请求时,它首先查看资源是如何受保护的,资源可以用户匿名访问保护,或者用标准的本地或活动目录证书保护。IIS通过标准的访问控制列表(ACL)查看用户对请...
从Stereo-seq原始数据到Seurat对象:华大空间转录组分析流程实战解析
本文详细解析了从Stereo-seq原始数据到Seurat对象的完整分析流程,重点解决华大空间转录组数据处理中的三大痛点:bin_size参数设置、批量处理内存管理及格式转换信息丢失。通过Python的stereopy库和R的SeuratDisk包,实现.gem到.h5ad再到.h5seurat的高效转换,为研究者提供了一套可复用的空间转录组分析解决方案。
Tesla V100 在 Windows 下的驱动选择与模式切换实战
本文详细解析了Tesla V100专业计算卡在Windows系统下的驱动安装与模式切换实战。针对设备管理器识别但任务管理器“隐身”的常见问题,文章指出其默认TCC模式为纯计算设计,并指导用户正确选择数据中心或GRID驱动。核心在于通过注册表修改或驱动选择,在高效的TCC模式与便于监控的WDDM模式间切换,同时提供了nvidia-smi命令行监控与AI框架测试等稳定使用方案。
在 ASP.NET 中使用代码访问安全
发布日期: 12/15/2004 | 更新日期: 12/15/2004查看全部的安全性指南主题Microsoft Corporation本单元概要代码访问安全是一个资源约束模型,使管理员可确定特定代码是否和如何访问指定的资源并执行其他特权操作。本单元的重点放在 ASP.NET 代码访问安全策略配置上,说明如何克服开发部分信任 Web 应用程序时可能遇到的一些主要障碍。本单元详细阐述了代码访问安全的
鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结
1、算法说明经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。经过P点的入射光线没有透镜的话,本应交于相机成像平面的e点。然而,经过鱼眼相机的折射,光线会交于相机成像平面的d点,就产生了畸变,因此畸变图像整体上呈现出像素朝图像中心点聚集的态势。而去畸变,就是将折射到d点的点,重新映射回到e点,因此去畸变之后的图像与原始的鱼眼图像相比,仿佛是把向心聚集的像素又重新向四周铺展开来。AVM环视系统——鱼眼相机去畸变算法 - 知乎。
ASP.NET常见安全缺陷集锦
保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,随着应用规模的发展,修补安全漏洞所需的代价也随之快速增长。根据IBM的系统科学协会(Systems Sciences Institute)的研究,如果等到软件部署之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的15倍。 为了用最小的代价保障应用程序的安全,在代码本身的安全性、抗御攻击的能力等方面,开发者应当担负更多的责
MCGS触摸屏Modbus TCP通讯实战:从寄存器写入到字符串处理的完整代码解析
本文详细解析了MCGS触摸屏通过Modbus TCP协议实现寄存器写入和字符串处理的完整代码,涵盖单寄存器写入、多寄存器写入及字符串传输等核心技术。文章还提供了MCGS组态环境中的实战配置步骤和常见问题排查方法,帮助开发者快速掌握工业自动化通讯的关键技术。
硬核反坑!YOLOv5训练避坑指南:根治梯度消失、不收敛、检测漏框三大核心问题(附实战代码+调优清单)
数据是基础,超参数是关键,模型是工具,训练策略是保障。梯度消失、不收敛、检测漏框这三大问题,本质上都是“数据-模型-训练”不匹配的结果。梯度消失/爆炸:优先调整学习率策略+梯度裁剪,其次优化模型结构;训练不收敛:优先清洗数据集,其次调优超参数,最后检查配置文件;检测漏框:优先重新聚类锚框,其次增强浅层特征,最后调整推理参数。YOLOv5训练的最高境界,不是调参,而是让数据、模型、训练策略三者完美匹配。按本文的方法反坑,你的YOLOv5训练一定能一次成功!🚀。
保护 ASP.NET 应用的安全
这里很多人都有丰富的ASP.NET web应用开发经验,但是可能有很多人对应用的安全没有足够的重视,下面就ASP.NET的安全问题做一个简要的叙述。1. 概述1.1. 配置文件在创建Asp.net的应用时,Asp.net为我们提供了配置文件来配置session state、授权和认证等等。有两个配置文件:(1) Maching.config——用来定义server的
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
ASP.NET安全漏洞
几个小时前,我们发布了一个关于ASP.NET安全漏洞的Microsoft 安全警告,该漏洞存在于目前所有的ASP.NET版本。 该漏洞是在上周五的一个安全会议上发现的。我们建议所有的客户立即采取补救措施(见下文)来预防攻击者利用此漏洞攻击您的ASP.NET站点。 9月20日更新:我发布了另一篇博客,其中包含关于此问题的一些FAQ,您可以从这里阅读。 9...
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
ASP.NET Web API的安全管道
本篇体验ASP.NET Web API的安全管道。这里的安全管道是指在请求和响应过程中所经历的各个组件或进程,比如有IIS,HttpModule,OWIN,WebAPI,等等。在这个管道中大致分两个阶段,一个是验证阶段,另一个是授权阶段。在ASP.NET Web API v1版本的时候,安全管道大致是这样的:→ Authentication,请求来到IIS中的HttpModule→ Auth...
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
让你的ASP.NET Core应用程序更安全
对于ASP.NET Core应用程序,除了提供认证和授权机制来保证服务的安全性,还需要考虑下面的一些安全因素:CSRF强制HTTPS安全的HTTP HeadersCSRF...
ASP.NET 保证数据访问的安全
ASP.NET 保证数据访问的安全 大多数 ASP.NET Web 应用程序都涉及数据访问。许多应用程序都会收集数据并将其存储在数据库或文件中,要存储的数据通常基于来自用户的信息。由于原始数据可能来自不受信任的来源,信息是以持久格式存储的,并且您希望确保未经授权的用户不能直接访问您的数据源,因而您需要特别注意与数据访问有关的安全问题。本主题中所介绍的最佳操作将帮助您提
ASP.NET - 保证登录控件的安全
ASP.NET 登录控件使您能够提供一种解决方案,根据用户身份验证、成员资格和角色来控制对网页的访问。登录控件包括:CreateUserWizard 控件、Login 控件、LoginStatus 控件、LoginView 控件、PasswordRecovery 控件和 ChangePassword 控件。虽然下面的编码和配置最佳实践可以提高应用程序的安全,但您还需要不断地更新
ASP.NET MVC中的安全性
目录 介绍 认证 表单身份验证 Windows身份验证 如何配置表单身份验证? 我们如何使用Windows身份验证进行身份验 XSS Anti XSS Library 跨站点请求伪造 那问题是什么? 我们怎样才能防止这种情况? 介绍 在本文中,我想解释一些在开发安全的ASP.NET MVC应用程序时应该注意的安全措施。在本文中,我将解释: 认证 授权 XSS CS...
ASP.NET安全问题
ASP.NET安全问题(一) ASP.NET安全问题(二) ASP.NET安全问题(三) ASP.NET安全问题(四) ASP.NET安全问题(五) ASP.NET安全问题(六) ASP.NET安全问题(七) ASP.NET安全问题(八) ASP.NET安全问题(九)



























113



被折叠的 条评论
为什么被折叠?



