此过程会限制当前用户,使其无法查看其他任何用户的数据。但是,如果此过程中的 SELECT 语句是通过动态 EXEC() 或通过 sp_executesql 执行的,您则必须授予用户对 UserInfo 表的直接 SELECT 权限,这是因为这个动态执行的查询是在当前用户的安全上下文中运行的。如果用户能够直接登录服务器,他们则可以使用此权限跳过该存储过程提供的行级安全,查看所有用户的数据。
总而言之,下面的建议将有助于您开发在 SQL Server 中安全运行的 T-SQL 代码:
保护您的开发 SQL Server 的安全,就好像它是一个生产服务器一样。这样有助于确保您开发安全的代码,还可以帮助您定义应用程序正常运行所需的最低权限集。
进行 T-SQL 开发和测试时请使用具有最低权限的 SQL Server 帐户。不要使用 sysadmin 或 dbo 帐户。
对于允许 T-SQL 执行任意外部代码的存储过程,要非常注意,如 sp_OACreate 和 xp_cmdshell。如果必须使用这些扩展,则一定要考虑它们独特的安全隐患。
请遵照保护 T-SQL 开发的最佳方法,其中包括:将用户提供的数据以显式参数进行传递、编写可避免 SQL 注入式攻击的代码、避免使用不必要的动态 SQL、授予访问存储过程的权限而不要授予直接访问基表的权限。
安全的 T-SQL 才能构成安全的应用程序。利用下面的资源可以确保您的服务器进行了安全配置,并确保您拥有一个安全的数据库客户端应用程序。
SQL Server Security Resource Page
Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication
SQL Server 2000 SP3 Security Features and Best Practices: Secure Multi-tier Deployment
上一页 [1] [2]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18