论文部分内容阅读
随着网络的广泛应用,网络安全的重要性日益凸显。ASP.NET web应用程序面对着各种威胁和攻击,有效的抵御这些攻击才能建立安全牢固的web应用程序服务。当前很多国内和军队单位都使用ASP.NET开发网站服务,然而相当一部分网站没有周密的安全方案,只重视硬件防火墙等网络层的安全技术,而对应用程序的安全性设计考虑不够。本文通过对ASP.NET安全机制的分析和研究总结了设计安全的ASP.NET Web应用程序的关键问题和技术方法。主要包括:管理用户、验证和授权、管理会话和存储机密等四个方面,并针对一个学生信息管理系统的需求,给出了其登录、验证、会话管理等关键环节的安全代码示例,为软件开发人员分析和设计安全的ASP.NET Web应用程序提供参考。首先,论文研究了ASP.NET Web应用程序的用户管理问题。包括建立用户证书,管理密码,重新设置密码等方面。用户的安全性首先在于用户名和密码的选择,用户证书是用户名和密码的组合。在web程序中易于猜测的、可预测的或默认的密码都容易受到密码猜测攻击和暴力攻击,易于猜测的用户名也是如此。可预测的或默认的密码可能会影响到大量帐户的安全性。一些开发人员习惯于使用默认的用户名和密码,攻击者可以使用搜索引擎定位易于受到攻击的站点。本文总结了开发“用户名/密码”管理程序时应该遵守的准则,包括:用户在第一次使用帐户或应用程序时设置他们的密码;设定密码的最小长度限制;不限制密码的最大长度;密码包应括多种字符集;允许密码中使用任意键盘字符;避免使用程序自动生成用户名和密码;不允许字典单词;不允许密码中出现用户名;只在需要时才使用随机生成的密码。在管理密码上,主要讨论了存储密码的一些有效方法。常见的3种是:1.可以自己将密码本身存储为普通文本。2.可以加密密码,并存储加密文。3.可以创建一个单向的密码哈希,并且将这种哈希表存储在数据库中。第二,论文对ASP.NET Web应用程序的验证和授权机制进行了分析。正在创建的应用程序类型和要访问资源的方式都会影响验证和授权的方法。通常有两种设计模型[1]:1.受信任的子系统。2.模拟/委托。ASP.NET具有灵活的安全架构,可以处理不同的验证情况。IIS6和ASP.NET是两种截然不同的技术,二者必须联合配置才能实现正确的操作。IIS7整合了ASP.NET的配置模型,简化了设置过程[1]。ASP.NET利用管道中的AuthenticateRequest和AuthorizeRequest事件实现处理验证和授权的挂钩。ASP.NET还可与一组订阅这些事件的安全模块一起加载,通过web.config中的<authentication>元素设置需要加载的安全模块。ASP.NET使用两个接口IIdentity(验证)和IPrincipal(授权),对验证和授权进行抽象。Windows验证将身份和角色信息打包到一个不透明的windows令牌中,而在ASP.NET中验证用户和添加授权信息分隔为两个不同的步骤,将其与HTTP管道的可插入特性相结合,能够在应用程序中实现更好和更灵活的安全性设计。第三,论文分析了ASP.NET Web应用程序的安全会话管理。为避免反复询问用户名和密码,ASP.NET服务程序使用会话机制来管理一系列非连接的浏览器请求,向浏览器发送特定用于每个会话的标志字符串-标记。标记分为会话标记和验证标记两种基本类型。通过标记,服务器可将这些非连接的请求作为一个连续的连接来对待。本文讨论了针对标记的安全策略[2]:1.尽可能采取额外的措施将标记绑定到客户会话。2.尽可能使用SSL传送标记。3.会话标记中总是使用足够大的密钥空间。4.会话标记中总是使用强随机数生成器。5.不要接受由客户提交的新标记。6.不要在标记中包括可见的普通文本用户标志符。第四,论文讨论了ASP.NET Web应用程序存储机密的技术。ASP.NET使用加密方法来提供高等级的应用程序服务。应用程序无论在何时处理敏感数据,都必须尽力避免让未授权的用户查看或修改数据。第一步是确定威胁及要保护的数据,如果必须保存敏感数据就要考虑加密。应启用安全传输协议以防范监听。在保护密码方面,hashing是一种避免保存明文的简单有效方式。设计系统时,把加密密钥保存在应用程序服务器上是较好的选择。最后,论文针对一个学生管理信息系统的安全要求,给出了其登录、验证、会话管理等关键环节的安全代码示例,为软件开发人员分析和设计安全的ASP.NET Web应用程序提供参考。