好学IT学院:IT信息技术分享交流平台
标签:.NET  来源:IT专家网  作者:wanglei  发布时间:2010-05-22  ★★★加入收藏〗〖手机版
摘要:标准化程序开发是敏捷开发中的核心内容之一。标准化代码不仅有利于团队之间的合作,也有利于模块之间的集成,节省时间与成本。在VS中也为创建标准化代码做出了很多努力。笔者在这篇文章中就跟大家分享一下,在VS平台中创建标准化代码的注意事项。具体的说,就是五大禁令和四大…

核心提示:标准化程序开发是敏捷开发中的核心内容之一。标准化代码不仅有利于团队之间的合作,也有利于模块之间的集成,节省时间与成本。在VS中也为创建标准化代码做出了很多努力。笔者在这篇文章中就跟大家分享一下,在VS平台中创建标准化代码的注意事项。具体的说,就是五大禁令和四大推荐。

禁令一:不要随意检查代码。

这可能跟用户正常的认识有所差异。有些开发人员可能认为在开发过程中,检查代码是必须的。不过在敏捷开发的模型中,这恰恰是禁止的。因为如果在代码的编写中,不时的检查代码,会浪费开发人员大量的时间与精力。当然,这也并不是说用户不用检查代码的工作,而是强调代码的检查应该有一个特定的模型。

具体的说,在编写代码的时候,应该事先做好相关的准备。如需要创建一个威胁模型,然后在模型的指导下完成相关的代码检查工作。在必要的情况下,项目小组需要确定接受最严格的安全检查的代码的优先顺序,已经发现问题时的解决顺序。在VS中,可以帮助项目团队建立一个威胁模型,并指导开发人员的后续工作。

禁令二:没有验证用户的输入。

代码的标准化还包括对用户输入的验证。如一个日期型字段,本来只允许用户输入某个特定范围内的日期。但是用户可能由于某种误操作,输入了一个非日期型的数据或者输入的日期超过了某个特定的范围,此时由于开发人员在用户界面中没有采取任何的验证操作,导致应用程序接受了这个不合理的值,并进行了后续的运算。等到运算结果出来后或者根本无法进行后续的运算才发现用户的输入有问题,向用户提示错误信息。此时已经晚了。不但浪费了用户的时间,而且在系统中产生了不必要的垃圾数据。更严重的是,可能会因为用户输入了错误的数据,导致系统运算出现死循环。最终会因为系统资源耗尽,而使得应用程序当机。

这是一个明显违反代码标准化的做法。在实际应用程序开发过程中,应该避免这种情况的发生。

禁令三:利用断言来检查外部收入。

注意断言这项功能在VS中还并不完善。微软也没有将其编译到正式的版本中。所以开发人员不能够使用断言来验证外部输入。而必需采用其他的方式,来仔细验证导出的函数和方法,以及相关的参数与结果,并确认所有用户的输入以及所有文件和套结字数据的有效性。这个检查看起来比较麻烦,其实只要做好第一点,即在一开始就建立一个合适的威胁模型,那么这个检验的工作就会变得非常的简单。

禁令四:硬编码的用户ID与密码对。

硬编码的用户ID与密码对的存在,严重违反了标准化代码与敏捷开发的要求。如果使用VS系统提供的代码分析工具,这个工具会检测到硬编码用户ID与密码的存在,并提醒开发人员不要这么操作。

硬编码用户ID与密码,简单的说就是在应用程序代码中直接创建用户名与密码。这是禁止的。在程序开发过程中,要与用户有比较好的互动性。这包括允许用户创建用户并根据自己的需要设置密码。从技术层面来说,可以使用一个加密的文本文件或者数据库来存储用户的用户名与密码。当用户登录的时候,对其进行解密并进行匹配。

禁令五:缓冲区溢出。

缓冲区溢出也违反了敏捷开发的基本要求。缓冲区溢出会带来很多意想不到的后果。而且有些攻击程序就是通过缓冲区溢出来实现攻击目的的。很多不标准的代码编写习惯会导致缓冲区溢出。如在代码中没有检查用户输入数据的合法性,则用户就可以在输入的数据中加入一些非法的元素,导致函数的返回地址被用户的某个地址所覆盖,从而造成缓冲区溢出,实现攻击者攻击的目的。

一般来说,只要标准建立恰当,并在实际开发中严格按照规则来进行开发,那么可以在很大程度上避免缓冲区溢出的问题。如在标准中,会写明对于用户输入的每个数据都需要进行合法性验证。如果开发人员没有遵循这个标准,那么就一切都白搭。