を使用して SQL インジェクションを防止するEXECUTE AS
SQL インジェクションを防ぐ方法の 1 つは、ログインせずにデータベース ユーザーを作成することだと言われました。
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 にはログインする権限がないため、上記の手順をどのように使用できるでしょうか?