本文着重介绍下ADO.NET安全性,ADO.NET安全性由三个高级步骤组成: 了解攻击者的目的、辨别系统安全性和确定威胁,看完本文你肯定有不少收获,希望本文能教会你更多东西。
编写安全 ADO.NET 应用程序不仅仅是避免常见的编码缺陷(如不验证用户输入)。访问数据的应用程序具有许多潜在的故障点,攻击者可以利用这些故障点来检索、操作或损坏敏感数据。因此,了解安全性的各个方面(从应用程序设计阶段期间的威胁建模过程到应用程序的最终部署和不断的维护)非常重要。
.NET Framework 提供了很多有用的类、服务和工具,以用于保证数据库应用程序的安全和对其进行管理。公共语言运行库 (CLR) 提供了供代码在其中运行的类型安全环境,以及用于进一步限制托管代码权限的代码访问安全性 (CAS)。遵循安全数据访问编码惯例可降低由潜在攻击者造成的损坏。
编写安全代码不会阻止在使用非托管资源(如数据库)时自己造成的安全漏洞。多数服务器数据库(如 SQL Server)拥有其各自的安全系统,正确实现这些安全系统可增强安全性。但是,即使是具有可靠安全系统的数据源,如果未适当配置,也可能受到攻击。#t#
保护应用程序的安全是一个持续的过程。 因为不可能预知将来会出现哪种新的攻击技术,所以开发人员永远都不能保证某一应用程序可以免受所有的攻击。 仅因为还没有人发现(或发布)系统中的安全性缺陷,也不意味着不存在或可能不存在安全性缺陷。 在项目的设计阶段,您需要对安全性进行规划,并规划如何在应用程序生存期内维护其安全。
在开发安全应用程序时遇到的最大问题之一是安全通常是事后的补救办法,即在项目的代码完成后才想起需要实现某些内容。 因为未考虑如何维护应用程序的安全,所以在开始阶段未注重应用程序安全性将导致所开发的应用程序不安全。
到最后关头再实现安全性将导致更多 Bug,因为软件无法承受新的制约,或必须重写才能容纳未预想到的功能。 每行修订的代码都可能引入新 Bug。 因此,您在开发过程的初始阶段就应考虑安全性,使得安全性可与新功能的开发同步进行。
您只有了解系统可能会受到的所有攻击,才能使系统免受这些攻击。 评估安全威胁的过程称为“威胁建模”,该过程是确定 ADO.NET 应用程序中违反安全性的可能性及后果所必要的。
威胁建模是一种迭代方法,用于评估应用程序中的漏洞,以找到可公开敏感数据的最危险的漏洞。 一旦确定了漏洞,您就可以按安全性对其进行排列,并创建一组按优先顺序排列的措施以应对威胁。