asp.net MVC 常见安全问题及解决方案
- asp.net MVC 常见安全问题及解决方案
- 一.CSRF (Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用)
详细说明: http://imroot.diandian.com/post/2010-11-21/40031442584Example : 在登陆状态下进入了攻击网站向安全站点发送了请求。Solution: 在view 中使用 @Html.AntiForgeryToken(), 在Action 上加上 [ValidateAntiForgeryToken] 特性。 再次点到跨域请求的时候就会显示 :“The required anti-forgery cookie "__RequestVerificationToken" is not present.”二.XSS (XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。)Solution: 分为 Html ,js ,url 三大领域。 需要区别对待进行输入输出编码。Html 使用 Server.HtmlEncode , Server.HtmlDecode;url使用 Server.urlEncode, Server.urlDecode;js 使用: escape, unescape;或者使用 Anti-XSS 库。 下载地址 :http://www.microsoft.com/en-us/download/details.aspx?id=28589引入后,html ,js ,url 分别对应的方法 HtmlEncode(string),JavaScriptEncodes(string),UrlEncode(string).三.直接对象引用Example: …/Bidding/RFPRFI/Detail?editId=xxx。可以直接看到其他公司的信息;bidding-> evaluation . 应标方可直接在地址栏中输入:…/Bidding/Evaluation/SaveScope?proposalId=1603&priceScope=100&proScore=100&chs=100。 来随意修改评分。还有MDI 系统中的下拉框是easyui绑定一个隐藏域两部分。 甚至可以使用浏览器的调试工具, 直接修改hidden 域的值后提交。Solution: 加入验证。 例如 : select * from rfprfi where edited = xxx and owner = currentuser.userid. 验证该用户对此信息是否有读写的权限。(具体要根据业务逻辑一一处理,这个工作量十分大。建议后期完成)。四.DOSSolution:可使用HTTPModule阻止访问率太高的ip。 example code 见我的博客:http://www.2cto.com/kf/201307/226466.html这种方式是针对固定IP发起的DOS攻击来的。 如果攻击方使用了代理IP,则需要考虑用其他方式。 关于这一点后续会作补充。五.传输层未做保护Example: 登陆系统的post请求中将account , loginname , password 信息都是明文传输。Solution: 使用HTTPS。(需要付费)。六.暴力破解密码目前的登陆和修改密码,没有错误次数的限制。Solution: 是否可以加入新的逻辑:单位时间内输入错误次数大于一个数值时,改账号会被冻结。可以由改company的admin 解冻 或者发送申请到 sunnet后由sunnet公司解冻。七.数据加密目前登陆密码是用DES加密的。 一般登陆用的密码都是用单向的加密,比如MD5。而例如Invoice number ,pipeline 的位置信息,都用DES加密后存入数据库。八.身份验证问题:目前是使用了session认证。如果被会话劫持或者会话冒充。则失去了认证机制。Solution:使用多重保险。1.使用form认证:目前配置文件中已加入form认证的节点,<forms loginUrl="~/Account/Login" timeout="2880"/>但是code中并没有使用。需要再登陆成功后加入 System.Web.Security.FormsAuthentication.SetAuthCookie登出后加入 System.Web.Security.FormsAuthentication.SignOut,在basecontrol 中再加上一层 User.Identity.IsAuthenticated的判断即可。2.使用membership 与FormsAuthentication 一起创建身份验证。3.是否考虑使用WCF 来完善验证机制。4.Passport 验证。(由微软提供,需要收费。。)九.错误处理问题:为了安全起见,应该假设在某些时候会发生一个没有捕获的异常。Solution: 1.重写 Controller 的 OnException方法:12345
protected
override
void
OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled =
true
;
this
.View(
""
).ExecuteResult(filterContext.Controller.ControllerContext);
}
2. 或者通过 HandleError特性来实现一个或多个异常处理器。特别是比如invoice paid之类的重要操作,需要更细粒度的错误处理十.CAS 权限目前没有控制代码访问安全。Solution:1.使用具体的权限类实现标准的方法:比如需要严格控制文件的读权限。12345678910FileIOPermission iopermission =
new
FileIOPermission(FileIOPermissionAccess.Read,
"xx.txt"
);
try
{
iopermission.Demand();
//实现方法
}
catch
(SecurityException ex)
{
//处理异常
}
或者使用相关联的特性:[FileIOPermission(SecurityAction.Demand,Read =”xx.txt”)]2.那些需要Full Trust 的代码放到 GAC单独的程序集中存储。因为GAC中的代码全部在Full Trust 下运行的。添加方式可以通过命令提示符 –sn 或者通过工具完成。添加完成后就可以在主程序中添加引用,并且需要添加 AllowPartiallyTrustedCallers 特性以得到访问权限
asp.net MVC 常见安全问题及解决方案的更多相关文章
- [转]asp.net MVC 常见安全问题及解决方案
本文转自:http://www.cnblogs.com/Jessy/p/3539564.html asp.net MVC 常见安全问题及解决方案 一.CSRF (Cross-site request ...
- AJAX跨域调用ASP.NET MVC的问题及解决方案
AJAX跨域调用ASP.NET MVC的问题及解决方案 问题描述: 解决方法: 只需要在web.config中添加如下标为红色的内容即可: <system.webServer> <h ...
- ASP.NET MVC常见问题解决方法
1.页面报错: The following errors occurred while attempting to load the app. - No assembly found containi ...
- ASP.NET MVC 多语言实现——URL路由
考虑实现一个完整的基于asp.net mvc的多语言解决方案,从路由到model再到view最后到数据库设计(先挖好坑,后面看能填多少). 我所见过的多语言做得最好的网站莫过于微软的msdn了,就先从 ...
- ASP.NET MVC学习之路由篇(1)
1.基本路由 RouteConfig.cs: 1 public class RouteConfig 2 { 3 public static void RegisterRoutes(RouteColle ...
- ASP.NET MVC Boilerplate简介
ASP.NET MVC Boilerplate简介 ASP.NET MVC Boilerplate是专业的ASP.NET MVC模版用来创建安全.快速.强壮和适应性强的Web应用或站点.它在微软默认M ...
- ASP.NET MVC学习(一)之路由篇Route
什么是路由 通过[路由]配置,路由可以规定URL的特殊格式,使其达到特殊效果. 在ASP.NET MVC框架中,通过路由配置URL,使用户的URL请求可以映射到Controller下的action方法 ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
随机推荐
- Android Bundle、Handler和Message类介绍
Bundle是一个载体,可以存放基本数据类型.对象等内容,相当于一辆汽车,可以装载很多东西,然后运到需要的地方,例如: Bundle mBundle=new Bundle(); mBundle.put ...
- 在Html中使用JavaScript的几点小结
前言 越发的意识到JS这门作为前端语言的重要性.所以下定决心这段时间在项目允许的情况下花大量时间在学习JS上.争取让自己的前端功底深厚一点. 小结 在包含外部js文件时,必须将src属性设置为指向相应 ...
- vbox内部linux :centos5.5与外部ping通(相互),而且域名访问
1 相互ping通:不能使用nat,nat只能单向通,虚拟机不能ping通主机,选择桥接: 如图: 2然后设置 ip:最好设置静态ip这样下次不用再改,这里我们只演示使用eth0网卡,=> vi ...
- 微软WTL模板库完整版安装(VS2010+windows7X64位环境下)分享
一:简介 想必大家对于微软的MFC应该都比较熟悉.但是WTL可能很多人比较陌生吧.下面我就简单的说说这个库. 首先对这个库的做个简单的介绍吧. WTL 是 Windows Template Libra ...
- hdu 4632 Palindrome subsequence
http://acm.hdu.edu.cn/showproblem.php?pid=4632 简单DP 代码: #include<iostream> #include<cstdio& ...
- C语言中文件的读取和写入
在C语言中写文件 //获取文件指针 FILE *pFile = fopen("1.txt", //打开文件的名称 "w"); // 文件打开方式 如果原来有内容 ...
- zatree第三方插件
Zabbix安装第三方插件zatree2.4.5 1.下载zatree第三方插件https://github.com/spide4k/zatree.git 2.检查PHP环境需要支持php-xml.p ...
- 看项目得到info_freeCsdn-01闪屏页面
/** * 渐变展示启动屏 */ private void startAnimation() { Animation aa = new Animation() { }; aa.setDuration( ...
- 获取UIColor中的RGB值(本人亲测多个获取RGB值的方法,这个最有效)
在自己研发的项目个人项目中,碰到一个从颜色中获取RGB值的需求. 在网上找了许久,也有一些方法可以获取RGB值,但不能获取黑白以及灰色的值(他们是非RGB颜色空间,不清楚什么意思,反正亲测确实获取不了 ...
- Html.ActionLink , Url.Action
也来总结一下 以后省的忘了 都是从controller中获取到action名字返回 html.actionlink 返回的是带<a> 标签的超链接 url.action 是返回正常cont ...