У меня есть ситуация, когда мне нужно сделать это
CREATE PROCEDURE search_sp @condition varchar(8000) AS
SELECT * FROM tbl WHERE @condition
Если я добавлю в базу данных пользователя, у которого есть только роль 'db_datareader', а затем использую команду execute as для переключения контекста на этого пользователя в целях выполнения оператора select, защитит ли это меня от внедрения SQL?
например,
DECLARE @cookie varbinary(100);
EXECUTE AS USER = 'restricted__user' WITH COOKIE INTO @cookie;
DECLARE @SQL AS NVARCHAR(MAX)
SET @SQL= 'SELECT * FROM tbl WHERE ' + @condition
EXEC sp_executesql @SQL
REVERT WITH COOKIE = @cookie;