缺陷缺陷
可能允许未授权访问的实践包括:
•数据访问代码中缺乏授权,会提供无限的访问权限
•特权过高的数据库帐户
对策对策
为防止未授权的访问:
•使用主体权限要求授权调用方用户。
•使用代码访问安全权限要求对调用方代码授权。
•使用受限权限限制应用程序登录数据库,并防止直接对表进行访问。
网络侦听网络侦听
大多数应用程序的部署体系结构都包括一个将数据访问代码从数据库服务器分隔开来的物理隔离层。因此,敏感的数据如特定
于应用程序的数据或者数据库登录凭据,必须进行保护,以防网络侦听。
缺陷缺陷
以下实践增加了网络侦听的可能:
•SQL 身份验证过程中在网络上传递明文凭据
•发送到数据库服务器和来自数据库服务器的未加密敏感应用程序数据
对策对策
为了限制网络侦听缺陷,应该:
•使用 Windows 身份验证避免在网络上发送凭据。
•在数据库服务器上安装服务器证书。这将使网络上传输的 SQL 凭据自动加密。
•在 Web 服务器和数据库服务器之间使用 SSL 连接保护敏感的应用程序数据。这需要使用数据库服务器证
书。
•在 Web 和数据库服务器之间使用 IPSec 加密信道。
返回页首
设计注意事项设计注意事项
在开始编写代码之前,有许多重要问题需要在设计时考虑。重要的注意事项有:
•使用使用 Windows 身份验证身份验证。
•使用最低特权帐户使用最低特权帐户。
•使用存储过程使用存储过程。
•在存储区中保护敏感的数据在存储区中保护敏感的数据。
•使用不同的数据访问程序集使用不同的数据访问程序集。
使用使用 Windows 身份验证身份验证
理想情况下,您的设计应该使用 Windows 身份验证以获得更多安全上的优势。使用 Windows 身份验证,就不必存储带有嵌
入凭据的数据库连接字符串,凭据也不会在网络上传递,而且还可从安全的帐户和密码管理策略中获益。但是您的确需要仔细
考虑应该使用哪个帐户通过 Windows 身份验证连接 SQL Server。
有关更多信息,请参阅本单元后面的“身份验证”。
使用最低特权帐户使用最低特权帐户
您的应用程序应该使用最低特权帐户,该帐户只有数据库的有限权限。确保应用程序登录数据库经过适当的授权和限制。有关
详细信息,请参阅本单元后面的“授权”。
如果您的帐户受到损坏或者注入了恶意代码,使用最低特权帐户可减少风险,限制可能的损害。如果出现 SQL 注入,命令将
执行在应用程序登录所定义的安全上下文中,并受到登录具有的数据库相关权限的限制。如果您使用特权过高的帐户(例如,
作为 SQL Server sysadmin 角色的成员)连接,攻击者就可对服务器上的任何数据库执行任何操作。这包括插入、更新和删
除数据、删除表和执行操作系统命令。
重要说明重要说明 不要使用 sa 帐户或者任何属于 SQL Server sysadmin 或者 db_owner 角色成员的帐户连接 SQL Server。
使用存储过程使用存储过程
存储过程在性能、可维护性和安全方面都有其优势。应该尽可能地使用参数化的存储过程进行数据访问。其安全方面的优势包