多数.NET开发人员都知道ASP.NET系统帐户在.NET Framework的第一个发行版本中是一个重大失败。为了增加ASP.NET的安全性,微软在最后的beta和.NET
Framework的发行候选版本中改变了ASP.NET帐户的类型,从系统帐户改成了普通用户帐户。这就迫使开发人员做一个选择:他们可以推迟他们的应用程序的发行时间,以取得时间修改他们的系统以支持新的权限默认值,或者他们也可以将ASP.NET的帐户类型改为系统帐户,但是这将面临一个系统的安全性降低的风险。
怎样在开发环境中管理安全性问题有两个有争议的派别,为了在最近要推出的.NET Server发行版中避免发生类似的问题,系统架构师以及开发经理必须在这两个派别间做出选择。
开发安全性的选择
当前开发工作室流行的观点是开发人员应该具有在一个开放环境中编写代码完全访问资源的选择权,这个开放环境就是开发人员具有管理员帐户,在编写应用程序时能访问网络上的任何资源。其理由是开发人员在创建系统原型或者为早期的产品发行版本工作时不用处理安全问题。具有熟练开发人员的公司不想推迟更多的时间推出产品,这些时间是开发人员创建应用程序早期版本时调试安全方面的问题所用的时间。
另外一派则承认部署在开发周期中的不安全的应用程序带来的最高费用和查找排除安全错误的递增费用。开发过程中有效的安全管理要求较多的时间和努力,系统架构师都趋向于低估那些努力。开发人员越快地意识到安全性问题,在开发周期内就能越早地发现并解决安全问题。
尽可能早地管理安全问题的一个最主要的原因是管理都倾向于假设系统原型和早期发行版本是“足够的好”可以用于部署的。由于这个原因,很多系统原型没有进行足够的安全测试就做成了产品。多数开发工作室没有花精力在他们的代码中改进安全性。我看到过几个使用SQL Server的产品应用程序在数据库登录时使用了缺省的sa帐户和空密码。微软正在做一个大胆的动作,即将.NET Server锁定,想使用微软系统作为他们的基础设施的公司应该跟随微软的领导,改进他们的开发环境以鼓励从开发过程的一开始就打算开发一个安全的系统。