设为首页 收藏本站
查看: 738|回复: 0

[经验分享] 使用 SQL Server 中的存储过程管理权限

[复制链接]

尚未签到

发表于 2016-11-5 00:47:18 | 显示全部楼层 |阅读模式
http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif
存储过程的优点


<!---->  存储过程具有以下优点:

  •   可以包装数据逻辑和业务规则,以便用户可以仅通过开发人员和数据库管理员打算使用的方式访问数据和对象。
  •   验证所有用户输入的参数化存储过程可用于阻止 SQL 注入攻击。 如果使用动态 SQL,请确保将命令参数化,并绝对不能将参数值直接包括在查询字符串中。
  •   可禁止即席查询和数据修改。 这样将阻止用户恶意或无意中损坏数据或执行查询,以避免降低服务器或网络的性能。
  •   可以在过程代码中处理错误,而无需将错误直接传递给客户端应用程序。 这样可防止返回错误消息,以避免其可能有助于探测攻击。 在服务器上记录错误并对其进行处理。
  •   存储过程只能编写一次,可由很多应用程序访问。
  •   客户端应用程序不需要知道有关基础数据结构的任何信息。 只要更改不影响参数列表或返回的数据类型,就可以更改存储过程代码,而无需在客户端应用程序中进行更改。
  •   存储过程可通过将多个操作组合到一个过程调用中来减少网络通讯。


http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif存储过程的执行


<!---->  存储过程利用所有权链接来提供对数据的访问,这样,用户就不必拥有访问数据库对象的显式权限。 如果按顺序相互访问的对象由同一个用户所拥有,就会存在所有权链接。 例如,存储过程可以调用其他存储过程,或者存储过程可访问多个表。 如果执行链中的所有对象的所有者相同,则 SQL Server 只检查调用方的 EXECUTE 权限,而不检查调用方对其他对象的权限。 因此,只需对存储过程授予 EXECUTE 权限;可以撤消或拒绝对基础表的所有权限。
  


http://i.msdn.microsoft.com/Hash/030c41d9079671d09a62d8e2c1db6973.gif最佳实践


<!---->仅编写存储过程不足以保证应用程序的安全, 还应当考虑以下潜在的安全漏洞。

  •   为您希望其能够访问数据的数据库角色授予对存储过程的 EXECUTE 权限。
  •   撤消或拒绝数据库中所有角色和用户(包括 public 角色)对基础表的所有权限。 所有用户会从公共角色中继承权限。 因此,拒绝对 public 的权限表示只有所有者和 sysadmin 成员具有访问权;所有其他用户将无法从其他角色的成员资格继承权限。
  •   请不要将用户或角色添加到 sysadmin 或 db_owner 角色。 系统管理员和数据库所有者可访问所有数据库对象。
  •   禁用 guest 帐户。 这样将阻止匿名用户连接到数据库。 默认情况下,会在新数据库中禁用来宾帐户。
  •   实现错误处理和记录错误。
  •   创建用于验证所有用户输入的参数化存储过程。 将所有用户输入视为不受信任。
  •   除非绝对必要,否则应避免使用动态 SQL。 使用 Transact-SQL QUOTENAME() 函数可分隔字符串值,并对输入字符串中的任何分隔符进行转义。

  以上内容转自:http://msdn.microsoft.com/zh-cn/library/bb669058.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295713-1-1.html 上篇帖子: SQL SERVER触发器恢复方法、数据库 下篇帖子: Page Sql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表