Hello World
Spiga

分类:ASP.NET

Padding Oracle Attack实例分析

2010-10-09 00:20 by 老赵, 11557 visits
摘要:在之前的《浅谈》一文中,我提到《Automated Padding Oracle Attacks with PadBuster》一文对理解Padding Oracle Attack非常有帮助,并打算将其翻译出来。现在我便来实现承诺了。《Automated》一文其实是在介绍PadBuster这个自动攻击工具,不过其中也通过实例加配图详细介绍了Padding Oracle Attack的原理——这也是我会翻译的部分。这篇文章写的非常通俗易懂,您只需要了解一点点关于加密的基础概念即可,不需要对加密算法或其证明有任何了解。我想只要配合些许Wikipedia上的定义,大部分朋友应该都能顺利地理解这篇文章。 阅读全文

浅谈这次ASP.NET的Padding Oracle Attack相关内容

2010-09-25 02:25 by 老赵, 5898 visits
摘要:上一周爆出了一个关于ASP.NET的安全漏洞,有关这个漏洞的第一篇文章应该是ScottGu的说明,但是其中各方面谈的也是语焉不详。由于这个漏洞关系到“安全”这样敏感的话题,其中又涉及到密码学这样常人看不明白的技术,于是导致了各种猜测和推测,其中甚至与我对ASP.NET的了解所有矛盾,因此我觉得也大都不靠谱。中秋休息在家,我简单地了解了一下与这个漏洞有关的内容,总结出了一些“能够说服自己”的内容,在此记录下来。因此,这篇文章的面向读者是那些和我差不多的同学:对ASP.NET有所了解,但对密码学知之甚少。 阅读全文

当类型为dynamic的视图模型遭遇匿名对象

2010-05-11 10:16 by 老赵, 9384 visits
摘要:当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错。不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型实在是太麻烦了,因此也出现了基于SmartBag等折衷方案。强类型是一种极端方案,而在C# 4.0中我们又可以使用另一个极端,那就是让Model成为dynamic类型,这样在视图中便可以完全自由地获取数据了。不过,在使用匿名对象的情况下视图会抛出奇怪的“无法找到成员”异常,我们必须解决这个问题。 阅读全文

F#与ASP.NET(2):使用F#实现基于事件的异步模式

2010-04-05 20:37 by 老赵, 2951 visits
摘要:在上一篇文章中,我们的简单讨论了.NET中两种异步模型以及它们在异常处理上的区别,并且简单观察了ASP.NET MVC 2中异步Action的编写方式。从中我们得知,ASP.NET MVC 2的异步Action并非使用了传统基于Begin/End的异步编程模型,而是另一种基于事件的异步模式。此外,ASP.NET MVC 2对于这种异步模式提供了必要的支持,使此方面的程序设计变得相对简单一些。但是,简单的原因主要还是在于已经由其他组件提供了良好的,基于事件的异步模式。那么现在我们就来看看一般我们应该如何来实现这样的功能,以及F#是如何美化我们的生活的吧。 阅读全文

F#与ASP.NET(1):基于事件的异步模式与异步Action

2010-04-02 00:09 by 老赵, 4897 visits
摘要:提高ASP.NET应用程序伸缩性的有效手段之一便是使用异步请求。而在ASP.NET MVC 1中是不能直接支持异步Action的,因此我们需要使用一些简单的Hack方式来实现这一点。不过简单的Hack毕竟无法利用ASP.NET MVC的完整功能,幸好ASP.NET MVC 2已经正式支持ASP.NET中的异步请求处理方式,并且通过一种比较易于使用的方式提供给开发人员使用。只可惜,由于语言层面的约束,这种使用方式还是有些不便,而此时便是F#的用武之地了。 阅读全文

数十行F#打造简易Comet聊天服务

2009-12-11 12:00 by 老赵, 9601 visits
摘要:普通的Web应用程序,都是靠大量HTTP短连接维持的。如实现一个聊天服务时,客户端会不断轮询服务器端索要新消息。这种做法的优势在于简单有效,因此广为目前的聊天服务所采用。不过Comet技术与之不同,简单地说,Comet便是指服务器推(Server-Push)技术。它的实现方式是(这里只讨论基于浏览器的Web平台)在浏览器与服务器之间建立一个长连接,待获得消息之后立即返回。否则持续等待,直至超时。客户端得到消息或超时之后,又会立即建立另一个长连接。Comet技术的最大优势,自然就是很高的即使性。而F#实现一个Comet原型,只要几十行代码。 阅读全文

Route组件GetVirtualPath方法性能优化结果

2009-12-08 01:32 by 老赵, 5960 visits
摘要:由于使用Lambda表达式生成URL的方式性能较差,因此我使用Fluent Interface来代替原有的Lambda表达式构建方式。Fluent Interface主要对生成URL的前两个阶段(创建对象及分析对象)进行了优化,分别带来了超过2/3和1/2的性能优化,但因为最后一步,也就是使用Route对象的GetVirtualPath方法构造URL的性能没有提高,因此总体性能只提高了30%。于是我打算重新实现GetVirtualPath方法,希望得到更好的性能。那么优化的结果又如何呢? 阅读全文

真有必要去除HTML中的空白字符吗?

2009-12-07 17:59 by 老赵, 11128 visits
摘要:刚才有朋友在MSN上问我说,他的页面中有许多空白字符,打开源文件一看发现这代码稀疏得很。他觉得很浪费,他说有什么办法可以去除它们。我问他“你的页面使用GZip压缩了吗?”他说用了,于是我回答说“那么就不用去除空白字符了,连续空白字符压缩得很好,去掉后效果不大的”。这时我又不禁想到早上那篇《博客园首页优化心得》中也有一条是“去除HTML中的空格、空行”,于是我便打算尝试一下,去除空白字符到底有多少效果。 阅读全文

jQuery Validation插件remote验证方式的Bug

2009-12-04 14:29 by 老赵, 8956 visits
摘要:jQuery插件很多,其中一个重要的插件便是jQuery Validation,它的作用是对表单进行验证,还上了jQuery官网。不过奇怪的是,最近用下来感觉有些古怪,因为好像有些死板,已有功能的应变能力还不强,甚至还有个奇怪的Bug。任何项目有Bug其实也正常,但这个Bug其实是一个文档上已经记载了,却没有实现的功能,这就有些说不过去了。这个问题便出在remote验证方式上,还好修改起来非常容易,在此记录一下,也方便以后的参考。 阅读全文

视频:Microsoft PDC 09,算法及数据结构内容及其他

2009-11-27 13:57 by 老赵, 6449 visits
摘要:这里又有一些新整理好的视频。Microsoft PDC 09是最近的重头,只要您是搞微软技术的,无论关注哪个技术方面,都可以找到许多有用的内容。我也经常从此类大会中了解许多平时不太关注的内容,也算是保持知识的新鲜度。此外,还有算法和数据结构相关的内容,以及有趣的Visual Studio纪录片。 阅读全文

URL生成方式性能优化结果

2009-11-19 10:33 by 老赵, 17633 visits
摘要:继上次发现URL生成的性能问题之后,我最近一直在关注一些细节的性能优化。这些优化方式不是宏观的,理论的,而是在实践上对相同问题的不同做法进行探索。我把探索的过程和结论都发布在博客上了,从结果上看性能提高是比较明显的。但是,把它们用于解决实际问题时,效果又会如何呢?我把MvcPatch进行了一些修改,然后再使用UrlGenBenchmark进行了一番比较。 阅读全文

我在TechEd的演讲:Real World ASP.NET MVC

2009-11-09 10:03 by 老赵, 20073 visits
摘要:上周的TechEd 2009比想象中忙,掺和了不少Session。不过一到晚上就开始胡吃海喝,总体来说过得还是挺不错的——只不过博客就落下了。嗯嗯,从现在开始继续。这个是我在这次TechEd上关于ASP.NET MVC的演讲以及演示代码下载,内容比较多,时间有些不够用。大家不妨看看,权当消遣。我去处理别的事情了……太多邮件没有回复,太多RSS没有看了。 阅读全文

为URL生成设计流畅接口(Fluent Interface)

2009-11-03 09:43 by 老赵, 18814 visits
摘要:昨天我比较了三种URL生成方式的性能,并对结果进行了分析。从结果中我们得知使用Lambda表达式生成URL的性能最差,而且差到了难以接受的地步。经过分析,我们发现其中光“构造表达式树”这个阶段就占了接近30%的开销。虽然表达式树的节点是有些多,但是.NET中创建对象其实非常快,我实在没想到它会占这么高的比例。因此,我们需要这种做法进行方向性的调整,减少对象创建的数目。 阅读全文

各种URL生成方式的性能对比(结论及分析)

2009-11-02 00:16 by 老赵, 18906 visits
摘要:上次我们设计了一个实验,比较三种不同URL生成方式的性能。您运行了吗?如果运行的话,有没有对结果进行一些的分析呢?现在我们就来详细观察及分析这次试验的结果,并给出我的分析。如果您有一些其他的看法,也请进行一些补充。从结果上看,Lambda表达式生成URL的性能令人难以接受,经过分析之后更发现,这是一个硬伤,必须根本性,方向性地进行改变。您对此有什么看法呢?我们不妨一起讨论一下如何做到“既美观,又高效”。如果您有更理想的做法也请告诉我。 阅读全文

各种URL生成方式的性能对比

2009-10-30 00:31 by 老赵, 19750 visits
摘要:在上一篇文章中我们列举了各种URL生成的方式,其中大致可以分为三类:1) 直接拼接字符串,2) 使用Route规则生成URL,3) 使用Lambda表达式生成URL。我们可以轻易得知,这3种作法可维护性依次增加,而性能依次减少。不过,我们还是有一个疑问,这个性能究竟相差多少?它是否的确真的可以被忽略?为此,我们还是来进行一次性能对比吧。您可以在这里下载文末的解决方案,亲自试验一下——不过在此之前,您不妨进行一个预测,猜猜看最后的结果究竟如何。 阅读全文

浅谈URL生成方式的演变

2009-10-29 00:29 by 老赵, 19722 visits
摘要:开发Web应用程序的时候,在页面上总会放置大量的链接,而链接的生成方式看似简单,也有许多不同的变化,且各有利弊。现在我们就来看看,在一个ASP.NET MVC应用程序的视图中如果要生成一个链接地址又有哪些做法,它们之间又是如何演变的。这个演变的过程,其实也是一步步发现缺点,再进行针对性改进的过程。我们虽然使用在ASP.NET MVC的视图作为演示载体,但是它的方式和思路并不仅限于此,它也可以用在ASP.NET MVC的其它方面(如在Controller中生成URL),或是其它模型(如WebForms),甚至与Web开发并无关联的应用程序开发上面。 阅读全文

对Action方法的参数进行双向转化

2009-10-23 09:47 by 老赵, 17330 visits
摘要:昨天有朋友忽然告诉我,在G点中国上搜索URL Routing时,我的《请别埋没了URL Routing》一文排在首位。这不禁让我汗颜,这是因为从现在的角度看起来,这篇文章的内容虽不能算错,但的确也不算是一种非常合适的做法。那篇文章的目的是展示如何利用URL Routing的扩展能力,将URL和Route Values通过Formatter进行双向的转化。这样便可以在Action方法中使用复杂参数的同时,也可以使用复杂参数得到正确的URL。这个目标是好的,可惜当时的思路有些偏差。现在我总结出了更合适的做法,并已经在项目中大量使用,效果不错。 阅读全文

简化DomainRoute的配置

2009-10-15 09:57 by 老赵, 16540 visits
摘要:昨天有朋友写邮件告诉我说,他正在项目中尝试着使用我提供的DomainRoute组件。我很高兴,这说明我的努力不是在自娱自乐,是对别人有实际帮助的,也有一些朋友会尝试着自行对项目进行扩展,而不总是靠微软提供的食物来过活。不过他说,他发现DomainRoute的配置非常繁琐,需要为每个Route使用WithDomain,提供了大量重复的信息。他说他也在构建了辅助API,不过似乎效果不够好,问我有没有更好的解决方法。其实是有的,因为我在使用DomainRoute的初期也遇到了这个问题,不过现在已经在MvcPatch中提供了个人认为比较令人满意解决方案。 阅读全文

浅谈Route组件的设计思考与模式

2009-10-14 09:46 by 老赵, 17304 visits
摘要:Route组件虽然可以说是ASP.NET的“门户”,不过至今为止似乎都被微软当作是二等公民。可能是由于自带的Route类功能已经太强,微软官方或社区内都不太关注RouteBase的扩展。不过有一点是正确的,那就是在大部分情况下的确没有必要去扩展RouteBase。事实上,我构建过不少RouteBase类,不过除了DomainRoute之外,其余的都被我放弃了,例如在大半年前写的《请别埋没了URL Routing》中所提供的FormatRoute,在MvcPatch中也已经有了更好的替代品(过几天便会谈到这一点)。 阅读全文

浅谈Route规则名称的作用,及MvcPatch的处理方式

2009-10-13 10:00 by 老赵, 16454 visits
摘要:国庆前的最后一天,我写了《关于ASP.NET Routing的几点内容》,其中谈论了ASP.NET Routing作用,设计目的,工作流程等等。不过我还有一个比较重要的东西一笔带过了,不知道您注意到了没有,在向ASP.NET Routing的RouteTable.Routes属性(一个RouteCollection对象)中添加Route规则的时候,我们会同时指定一个“名称”。在微软给出的官方“广告”中,似乎看不出这个名称有什么用。但事实上,它的功能非常关键。 阅读全文
1 2 3 4 5 6 7 8 9 Next >
使用Live Messenger联系我