防止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注入將數千個虛假記錄插入到表中。 –
我改變了代碼,你可以重新格式化請 –