上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页
摘要: 鉴于一些理由需要拦截WCF方法,比如参数的检测。一个实际的场景是CSRF防范中需要对CsrfToken的检测。要实现拦截,在形式上要实现两点:1:为WCF方法增加特性类;2:捕获WCF方法;第一点很好实现,实现一个Attribute类。第二点则可以利用WCF框架中的IOperationInvoker接口,让该Attribute类同时也实现该接口,同时在该接口方法的ApplyDispatchBehavior方法中,为dispatchOperation实现一个新的OperationInvoker。public class MyOperationInterceptorAttribute : Attr 阅读全文
posted @ 2012-10-31 12:39 陆敏技 阅读(5528) 评论(2) 推荐(4)
摘要: 这是以前在VS2010上让同事做的相关工作的备案,现在VS2012都出来了,2010都快过期,帖出来共享一下。一、单元测试微软官方给出的指导和示例在这里。一步一步按照说明下来就可以完成。(不截图说明了)。此外博客园有一篇文章说得比较清楚,在这里。二、创建并运行包含单元测试的负载测试微软官方给出的指导和示例在这里。一步一步按照说明下来就可以完成。(不截图说明了)更多测试项目和任务在这个页面也有。三、运行测试并查看代码覆盖率微软官方给出的指导和示例在这里。一步一步按照说明下来就可以完成。(不截图说明了)。这里需要说明的是,在我们查看代码覆盖率的时候出现这种情况:找不到任何覆盖率数据解决办法:1. 阅读全文
posted @ 2012-09-27 21:54 陆敏技 阅读(8154) 评论(9) 推荐(3)
摘要: 1:localhost.和127.0.0.1.带来的URL行为不一致无法走本地代理,这个无法本地调试的问题并不是个BUG,微软官方是有给出过解释的,这是源于IE浏览器和.NET框架对于本地请求是不走代理的,因而Fiddler无法检测数据。于是为本地地址加.符号,这就带来URL行为不一致的问题。取当前Context.Request.URL,会发现系统自动将地址中的.符号忽略了,这为我们针对URL编码带来了不一致的问题;2:target machine actively refused it(目标地址积极拒绝)Filddler Option的Enable IPV6取消。3:修改Custom Rul 阅读全文
posted @ 2012-07-19 14:55 陆敏技 阅读(1178) 评论(0) 推荐(0)
摘要: 异步、多线程、任务、并行编程之一:选择合适的多线程模型本篇概述:@FCL4.0中已经存在的线程模型,以及它们之间异同点;@多线程编程模型的选择。1:异步、多线程、任务、并行的本质这四个概念对应在CLR中的本质,本质都是多线程。异步,简单的讲就是BeginInvoke、EndInvoke模式,它在CLR内部线程池进行管理;多线程,体现在C#中,可以由类型Thread发起。也可以由ThreadPool发起。前者不受CLR线程池管理,后者则是。FCL团队为了各种编程模型的方便,还另外提供了BackgroundWorker和若干个Timer,基本上它们都是ThreadPool的加强,增加了一些和调用者 阅读全文
posted @ 2012-07-18 10:25 陆敏技 阅读(6751) 评论(2) 推荐(6)
摘要: 原理爆破是对系统的登录入口发起不间断的请求,达到暴力破解的目的。实际案例某系统存在爆破攻击点,只要模拟以下攻击,就能采用字典破解法,根据分析发现,只要返回状态为302的,为用户名密码正确,也就是被爆破了,状态为200的,为用户名密码错误。在攻击的过程中,我们只要准备好字典,就能顺利实现爆破。像用户名为luminji,密码为123456这样的用户很容易就会被爆破掉。请求:POST /sso/ValidateUser.aspx HTTP/1.1User-Agent: FiddlerAccept-Language: zh-CNContent-Type: application/x-www-form- 阅读全文
posted @ 2012-06-13 08:19 陆敏技 阅读(4477) 评论(10) 推荐(2)
摘要: 原理CSRF,Cross Site Request Forgery,即跨站点请求伪造。这种攻击是指,在用户正常登录系统以后,攻击者诱使用户访问一些非法链接,以执行一些非法操作。比如:如果删除用户操作(如,yourdomain.com/deluser?id=123)没有经过防范CSRF的处理,那么,假设用户登录系统后,攻击者诱使用户同时访问了攻击者的站点的一个链接(该链接正好为yourdomain.com/deluser?id=123),那么,系统就会在用户不知情的情况下丢失一个用户。在这个例子中,跨站请求中的链接之所以被正常执行,首先是因为请求中浏览器正常发送了yourdomain的认证信息( 阅读全文
posted @ 2012-06-08 07:01 陆敏技 阅读(9948) 评论(6) 推荐(4)
摘要: 原理会话劫持是指通过非常规手段,来得到合法用户在客户端和服务器段进行交互的特征值(一般为sessionid),然后伪造请求,去访问授权用户的数据。获取特征值的非常规有段主要有如下几种:首先是猜测的方式,如果我们的sessionid的生成是有规律的,那么使用猜测的方式就可以到达非法获取的目的,如图所示:其次是session fixation攻击。session fixation攻击是指用户通过XSS、网络嗅探、本地木马来得到特征值,这些交互的特征值一般来说放置在浏览器的Cookie中(当然,我们也知道sessionid也可以通过URL来传递,这样的话,获取就简单多了)。然后诱使用户去完成一次登录 阅读全文
posted @ 2012-05-30 08:34 陆敏技 阅读(7695) 评论(10) 推荐(6)
摘要: 原理跨站脚本(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。我们常常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本质上就是把输入的数据变成可执行的程序语句。SQL注入是如此,XSS也如此,只不过XSS一般注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cookie信息。其原理如下图所示:XSS从攻击原理上,分为三类:1:反射型XSS 将用户输入“反射”回浏览器,即将用户的输入变成HTML传输回客户端。如: Response.Write(“<script&g 阅读全文
posted @ 2012-05-22 08:23 陆敏技 阅读(20355) 评论(5) 推荐(7)
摘要: 1:HTTP重定向所谓HTTP重定向,就是通过修改HTTP响应头中的Location标识为新的URL,然后返回给客户端,让客户端重新根据这个Location标识的URL去做新的请求。这是一种最简单、也是最轻量级的负载均衡实现方案,使用asp.net,我们可以这样来实现,比如在主站www.yourdomain.com中,我们在默认主页如下编码: static string[] servers = { "http://192.168.0.77/luminji2/aspx/test3.aspx", ... 阅读全文
posted @ 2012-05-16 08:55 陆敏技 阅读(15563) 评论(6) 推荐(10)
摘要: AOP的特性使得它非常适合用来设计类似权限控制的功能,这是本文的基础,如果想要了解AOP的实现,可以参考《动态织入的AOP实现》。 在基于角色的访问控制(RBAC)中,有三要素:用户、角色、任务(或操作)(User、Role、Task),其稳定性逐渐增强,两个关系,User<->Role、Role<->Task,其中: User 是日常管理运行时建立 Role 是部署/交付建立 ... 阅读全文
posted @ 2012-01-13 17:38 陆敏技 阅读(4001) 评论(3) 推荐(3)
摘要: 动态织入的AOP实现,有两种方法:第一类,借助于Remoting命名空间下的几个类,通过获取当前上下文及反射的机制来实现,这需要被AOP的类需要继承自arshalByRefObject或者ContextBoundObject;第二类,原理是基于动态代理的思想,即在运行时动态构造一个原有类的子类,这样就可以在子类的重载方法中插入额外代码。这两类方法,都有显著的不足,前者直接要求我们继承固定类,后者呢,除非父类方法被定义为virtual,或者方法定义于某个接口,否则就不能被重载,这就是得“拦截”并不是可以对任意的方法进行的。动态织入局限于CLR的限制,不能实现对任何方法进行AOP,如果要突破这个限 阅读全文
posted @ 2012-01-10 15:48 陆敏技 阅读(5288) 评论(4) 推荐(0)
摘要: 控制器本身是不带有参的构造函数的,如果我们为控制器仅仅提供有参的构造函数,就会报错。不过,可以利用DependencyResolver的SetResolver方法,让ASP.NET MVC支持有参的构造函数。 1:为系统准备两个类型,如下: 注意,这里要实现的是让控制器支持Unity注入。 UnityControllerFactory代码如下: public class Uni... 阅读全文
posted @ 2011-12-22 18:04 陆敏技 阅读(2380) 评论(0) 推荐(0)
摘要: 一:领域驱动中的分层领域驱动设计将软件系统分为四层:基础结构层、领域层、应用层和表现层。· 基础结构层:该层专为其它各层提供技术框架支持。注意,这部分内容不会涉及任何业务知识。众所周知的数据访问的内容,也被放在了该层当中,因为数据的读写是业务无关的。· 领域层:包含了业务所涉及的领域对象(实体、值对象)、领域服务以及它们之间的关系。这部分内容的具体表现形式就是领域模型(Domain Model)。领域驱动设计提倡富领域模型,即尽量将业务逻辑归属到领域对象上,实在无法归属的部分则以领域服务的形式进行定义。· 应用层:该层不包含任何领域逻辑,但它会对任务进行协调,并可 阅读全文
posted @ 2011-12-16 15:57 陆敏技 阅读(2773) 评论(2) 推荐(2)
摘要: 一:第一类需求接口和类定义如下: public interface ISample<T> {} public class Sample : ISample<SomeClass2> {} public class SomeClass2{}要求用Unity注入。1:运行时注入如果是运行时注入,可如下编码: using (IUnityContainer container = new UnityContainer()) { ConfigurationManager.Get... 阅读全文
posted @ 2011-12-15 16:25 陆敏技 阅读(4304) 评论(0) 推荐(1)
摘要: 如果我们正在使用Session,那么构建高性能可扩展的ASP.NET网站,就必须解决分布式Session的架构,因为单服务器的SESSION处理能力会很快出现性能瓶颈,这类问题也被称之为Session同步。微软有自己的分布式Session的解决方案,那就是SessionStateServer,我们可以参考:ASP.NET Session State Partitioning http://blog.maartenballiauw.be/post/2008/01/23/ASPNET-Session-State-Partitioning.aspxASP.NET load balancing and 阅读全文
posted @ 2011-11-03 08:56 陆敏技 阅读(15293) 评论(22) 推荐(23)
摘要: 在网站的开发过程中,经常碰到的一类需求场景是:1:页面含热点新闻,热点新闻部分需要10分钟更新一次,而整个页面的其它部分1天内都不会变动;2:首页的某个BANNER需要显式:欢迎***;上面场景中的1,如果整个页面的缓存失效都定为10分钟,则势必增加性能开销,所以最好的策略是页面的不同部分采用不同的缓存失效时长。对于场景2也一样,我们不应该为了迁就某个BANNER不能应用缓存,就让整个页面都不支持缓存。可以说,如果我们在开发网站过程中的缓存策略是不支持页面局部缓存的,整个架构就是不合理的。一:局部缓存常用解决方案针对上面的需求,有几类解决方案:1、Client Side Includes(CS 阅读全文
posted @ 2011-10-19 09:27 陆敏技 阅读(5572) 评论(3) 推荐(4)
摘要: 到目前为止,我们讨论了把缓存存放在ASP.NET的输出缓存中(内存和硬盘),以及浏览器缓存中,而大型站点的另一种常用做法是将缓存部署在反向代理服务器上,这类缓存我们通常称之为反向代理缓存,比如Squid和Varnish。这两款软件通常都部署在非WINDOWS平台上,对于Windows平台上的Asp.net来说,其实一样能使用,我们完全可以把反向代理软件部署在LINUX上,然后代理会路由到后台的WINDOWS WEB(IIS)服务器。总之,非WINDOWS的世界很精彩。当然,无论是squid还是varnish都有Windows的扩展版本。本文为了简便起见,基于varnish的Windows版本来 阅读全文
posted @ 2011-10-17 08:50 陆敏技 阅读(7171) 评论(18) 推荐(5)
摘要: 源码:Luminji.Improve20111018.rar====目录前 言第一部分 语言篇第1章 基本语言要素 / 2建议1:正确操作字符串 / 2建议2:使用默认转型方法 / 6建议3:区别对待强制转型与as和is / 9建议4:TryParse比Parse好 / 12建议5:使用int?来确... 阅读全文
posted @ 2011-09-20 11:13 陆敏技 阅读(13150) 评论(41) 推荐(19)
摘要: 《编写高质量代码:改善C#程序的157个建议》中关于勘误的描述:资源及勘误通常情况下,一个问题的解决方案往往不止一种,你可能会不同意本书中的一些观点,甚至会强烈反对。没有关系,你可以通过luminji@hotmail.com(E-mail)与我分享你的宝贵意见,同时也可以在http://www.cn... 阅读全文
posted @ 2011-09-20 11:12 陆敏技 阅读(5762) 评论(20) 推荐(1)
摘要: 在上篇《ASP.NET性能优化之让浏览器缓存动态网页》中的方案中,浏览器发送If-Modified-Since将是否需要使用自己的缓存交给WEB服务器去决定,服务器告知浏览器去读缓存,浏览器才会去读缓存。这种机制存在的性能损耗,就是服务器的ASP.NET仍旧要接收请求,处理请求。此篇所讲的机制是让浏览器自己去决定是否去读缓存,这样就彻底消灭了针对服务器的请求。1:减少静态页面请求要让静态页面支持这个需求,我们需要用到http头中的Cache-Control: max-age。值得注意的是Cache-Control是在HTTP/1.1协议下的标识,它是HTTP/1.0协议中的Expires的升级 阅读全文
posted @ 2011-09-14 08:52 陆敏技 阅读(8282) 评论(23) 推荐(7)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页
Web Counter
Coupon for Contacts