防止SQL注入EXECUTE使用EXECUTE AS
防止SQL注入使用AS
我被告知,以防止SQL注入的方法之一是没有登录创建数据库用户:
CREATE USER User1 WITHOUT LOGIN
Go
GRANT DELETE ON T1 to User1
Go
create proc [dbo].[t1] (@ID INT)
with execute as 'user1'
as
begin
declare @sql as varchar(500)
SET @sql = 'delete from T WHERE ID = @ID'
exec (@sql)
end
我的问题是如何能我们使用上述过程,因为User1没有登录权限?
我也不懂这是如何防止SQL注入攻击。上述SP不能有SQL注入,因为没有参数,但如果有参数,它们被连接成是execed SQL字符串,但仍然没有阻止,除了给用户1有限的权限。因此,它不会阻止somone使用SQL注入将数千个虚假记录插入到表中。 –
我改变了代码,你可以重新格式化请 –