我已经看到了一些指导,这建议您通过分层通过存储过程的所有数据访问安全的数据库。使用存储过程访问数据会提供哪些安全优势?
我知道,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操作,如何使用存储过程中没有提供额外的安全性,还是安全性的管理?
可能是因为如果你是一名DBA是有效的最关键类型的安全性 - 它可以保护利用程序代码的程序员来编写查询数据库。 (半开玩笑......) – dkretz 2009-01-08 22:36:02