|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
轮性能微软曾做过一个例子,就是同一个项目用java和.net网页编程来作,结果开发周期,.net网页编程是java的一半,性能java是.net网页编程的十分之一,代码量java是.net网页编程的三倍。呵呵,这说明了什么,.net网页编程的全方位比java好。但是有的人说.net网页编程不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net网页编程很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net网页编程,只是推出了跨语言的.net网页编程,Ounce实行室克日提出了与SpringMVC相干的两个潜伏平安成绩。这两个成绩会影响到利用SpringMVC构建的使用,其发生的缘故原由都与服务器端对客户端参数的处置有关。InfoQ深切剖析了这两个成绩并与Ounce实行室睁开了一番会商。
Ounce实行室的官方公布中如许形貌这两个成绩:这些新发明的平安毛病和一样平常被跨站点剧本(crosssitescripting,即XSS)或SQL注进打击使用的毛病分歧,它们并非Spring框架外部的平安毛病,而是使用计划上的成绩。假如使用没有得当的计划和完成,那末就有大概表露本身的中心营业使用,并被打击者使用。假如开辟者在利用Spring框架计划和测试使用的时分思想中能对平安成绩有个分明且准确的熟悉的话,企业使用在部署以后也就不会那末简单遭到打击了。 接着,Ounce一一分析了这两个毛病:起首触及的是数据绑定历程。SpringMVC有如许一个特征:能够间接将表单中提交的字段主动传送到代表对象模子的javabeans。这个特征自己没有甚么成绩,但当你利用统一个bean来保护多个表单及数据(提交这些数据的表单是分歧的)时成绩就发生了。举个例子,例如说你有一个代表用户账户的bean,而你的web使用有两个分歧的表单会更新该bean,个中一个表单用来创立新帐户,另外一个用来更新已有帐户,那末打击者就有大概“借”更新帐户的表单的“手”往修正另外一个用户的帐户。第二个平安毛病与打击者借助用户可办理数据来把持营业流程有关。在平安范畴中,人们在用户数据的考证方面投进了很到的精神,以此来避免歹意的剧本内容大概SQL注进打击,但是假如用户可办理数据能够被用来把持营业流程的话,那末这些数据也必需经由过程考证。再举个例子,有一个利用SpringMVC构建的买卖使用,这个使用中有三个自力的把持器:一个处置新买卖哀求;另外一个处置买卖哀求考证;另有一个处置买卖实行。一旦该买卖流程中存在某个点,用户在这点上能利用把持器随便将哀求发送到的非既定的“视图”,那末这个营业流程就存在被侵扰的大概。假如一般买卖流程被侵扰,最初实行的则会是未履历证的买卖。 SpringSource的平安征询部门也具体剖析了这些成绩并给出了修复这些成绩的计划:为了避免数据提交到不成编纂的字段的情形产生,我们应当在显现设置DataBinder的过程当中声明同意绑定的字段,这必要设置使用中每一个DataBinder实例的“allowedFields”属性。关于怎样在次要的把持器完成中完成这些操纵,能够参考上面这个例子:
- SimpleFormController——覆写initBinder(HttpServletRequest,ServletRequestDataBinder)办法,并挪用ServletRequestDataBinder实例的setAllowedFields(String[])办法
- MultiActionController——在处置器的办法体中挪用你创立的任何ServltRequestDataBinder实例的setAllowedFields办法
- @Controller——利用@InitBinder注解将WebDataBinder显式注进到设置它的办法中。挪用setAllowedFields(String[])办法限定该把持器类所同意的属性。假如各个处置办法对应分歧的allowedFields值的话,能够经由过程@InitBinder注解的办法吸收HttpServletRequest,并作废以后的哀求映照
- AbstractWizardFormController——覆写initBinder(HttpServletRequest,ServletRequestDataBinder)并挪用DataBinder实例的setAllowedFields(String[])办法。挪用getCurrentPage(HttpServletRequest)办法以设置每一个页面同意的属性集
为了不ModelView注进的产生,万万不要让客户端自行选择视图。视图的选择应该由服务器端来决意。 Ounce又说他们信任别的良多框架也面对着相似的风险:只需框架同意主动绑定大概用户能够把持使用的营业处置,那末使用都有大概存在下面提到的两个成绩。我在客户编写的框架中就看到了相似的毛病,在比来存眷的一个RubyonRails使用中,也发明了一样的成绩。发生这些成绩的缘故原由在于,计划这些框架的初志是简化使用的开辟,匡助开辟者削减代码的编写量。但假如这些框架没法让复杂和平安(框架默许的设置情况所包管的平安)齐头并进的话,我们最初失掉的将是大批简单编写但其实不平安的使用。 检察英文原文:SecurityAdvisoryIssuedforSpringMVC
来自:http://www.infoq.com/cn/news/2008/07/spring-mvc-advisory
没有那个大公司会傻了吧唧用.net网页编程开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net网页编程不行,限制在window系统,又是捆绑,鄙视微软之! |
|