摘要:
异常条件可能会由配置错误、代码中的错误或恶意输入引起。如果没有正确的异常管理,这些条件可能会透露有关数据源位置和特性的敏感信息,以及有价值的连接详细信息。下面的建议适用于数据访问代码:•捕获和记录 ADO.NET 异常。•确保数据库连接总是处于断开状态。•在 ASP.NET 应用程序中使用一般错误页面。捕获和记录 ADO.NET 异常将数据访问代码放在 try/cat... 阅读全文
摘要:
许多 Web 应用程序都在数据库中以某种形式存储敏感数据。如果攻击者设法针对您的数据库执行查询,则务必要适当地加密所有敏感数据项(如信用卡号)。•加密需要存储的敏感数据。•确保网络上敏感数据的安全。•使用带有salt 的哈希值存储密码。加密需要存储的敏感数据尽可能避免存储敏感数据。如果必须存储敏感数据,请对其进行加密。使用 3DES 加密要将敏感数据(如信用卡号)存储... 阅读全文
摘要:
数据库连接字符串是针对数据访问代码主要考虑的配置管理问题。应认真考虑这些字符串的存储位置以及如何保护它们(特别是当它们包括凭据时)。要提高加密管理安全性:•使用 Windows 身份验证。•确保连接字符串的安全。•使用受限制的 ACL 确保 UDL 文件的安全。使用 Window 身份验证使用 Windows 身份验证时,系统会为您管理凭据,而且凭据不会通过网络传输。... 阅读全文
摘要:
如果用户能够检索和操纵特定的数据,就会建立授权过程。有两种方法:数据访问代码可以使用授权来确定是否执行请求的操作,数据库可以通过执行授权来限制应用程序所使用的 SQL 登录的功能。在授权不足的情况下,用户也许能够看到另一个用户的数据,未授权的用户也许能够访问受限制的数据。要去除这些威胁:•限制未授权的调用方。•限制未授权的代码。•限制数据库中的应用程序。图 14.3 ... 阅读全文
摘要:
当应用程序连接到 SQL Server 数据库时,可以在 Windows 身份验证或 SQL 身份验证之间进行选择。Windows 身份验证更安全。如果必须使用 SQL 身份验证(可能由于必须使用许多不同的帐户连接到数据库,并且希望避免调用 LogonUser),请执行其他几个步骤,以尽可能降低额外的风险。注意 如果使用 LogonUser 创建模拟令牌,需要在 Microsoft Windows... 阅读全文
摘要:
当应用程序使用输入内容来构造动态 SQL 语句以访问数据库时,会发生 SQL 注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生 SQL 注入攻击。SQL 注入可能导致攻击者能够使用应用程序登录在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。注意 传统的安全措施(如使用 SSL 和 IPSec)不能防止 SQL 注入... 阅读全文
摘要:
在开始编写代码之前,需要在设计时考虑许多重要的问题。主要的注意事项包括:•使用 Windows 身份验证。•使用最小特权帐户。•使用存储过程。•保护所存储的敏感数据。•使用单独的数据访问程序集。使用 Windows 身份验证理想情况下,在设计中应该使用 Windows 身份验证,以增加安全性好处。使用 Windows 身份验证,您不必存储具有嵌入凭... 阅读全文
摘要:
威胁与对策要构建安全的数据访问代码,需要了解数据访问代码中的威胁是什么、常见漏洞是如何产生的以及如何使用适当的对策来降低风险。数据访问代码面临的主要威胁包括:•SQL 注入 •配置数据的泄漏 •敏感应用程序数据的泄漏 •数据库架构和连接详细信息的泄露 •未授权的访问 •网络窃听 图 14.1 阐明了这些主要威胁。图 14.1 数据访问代码... 阅读全文
摘要:
部署注意事项以安全方式设计和开发的数据访问组件如果不以安全的方式进行部署,仍然容易受到攻击。常见的部署做法是使数据访问代码和数据库驻留在单独的服务器上。这些服务器通常由内部防火墙隔开,这就引进了额外的部署注意事项。开发人员和管理员应该了解下列问题:•防火墙限制 •连接字符串管理 •登录帐户配置 •登录审核 •网络上的数据私密性和完整性 防火墙限制如... 阅读全文
摘要:
本模块说明如何构建安全的数据访问代码,以及如何避免常见的漏洞和缺陷。本模块提供了一系列对策和防御技术,您可以在自己的数据访问代码中使用它们来减少与数据访问有关的主要威胁。目标使用本模块可以实现:•设计、构建和部署安全的数据访问代码。•使用代码访问安全性和基于角色的安全性可以限制未经授权的调用方或代码的访问。•安全地验证用户的身份。•防止 SQL 注入攻击。&... 阅读全文