gpt4 book ai didi

sql - 使用存储过程访问数据可以提供哪些安全优势?

转载 作者:行者123 更新时间:2023-12-02 08:17:22 24 4
gpt4 key购买 nike

我看到了一些指南,建议您通过存储过程对所有数据访问进行分层来保护数据库。

我知道对于 SQL Server,您可以保护表甚至列免受 CRUD 操作的影响。

例如:

 --// Logged in as 'sa'
USE AdventureWorks;
GRANT SELECT ON Person.Address(AddressID, AddressLine1) to Matt;
GRANT UPDATE ON Person.Address(AddressLine1) to Matt;

--// Logged in as 'Matt'
SELECT * from Person.Address; --// Fail
SELECT AddressID, AddressLine1 from Person.Address; --// Succeed
UPDATE Person.Address SET AddressLine1 = '#____ 2700 Production Way'
WHERE AddressID = 497; --// Succeed

鉴于您可以保护表甚至列免受 CRUD 操作的影响,那么使用存储过程如何提供额外的安全性或安全性管理?

最佳答案

因为通过限制对这些存储过程的所有访问,您已经建立了一个已定义的数据库接口(interface),所有访问都必须通过该接口(interface)进行...因为您将拒绝对存储过程进行直接选择、插入、更新和删除操作表和 View ,没有人可以直接编写自己设计的 sql 来执行他们想做的任何事情...如果您想将员工分配到三个以上项目的员工表中的插入限制为仅那些具有在能力测试中得分大于 85,那么您可以将该约束写入 SaveEmployee 存储过程,并让它向任何尝试执行此操作的客户端代码抛出异常...

当然,您可以使用客户端代码执行相同的操作,但是使用 sProcs 使流程更易于设计和管理,因为它全部集中在一个位置,并且尝试访问此数据库系统的所有应用程序都必须符合任何要求您在 SProcs 中定义的约束和/或安全规定...如果 SProc 是插入的唯一方法,则编写访问数据库的新的单独客户端应用程序的流氓开发人员可以忽略或解决 SProc 中的约束或安全规定或更新记录...

关于sql - 使用存储过程访问数据可以提供哪些安全优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com