Я пытаюсь сделать код "sql-инъекция-доказательство".Мне посоветовали использовать QUOTENAME
.
. Это работает:
select 'abc[]def'
и дает результаты, аналогичные
select QUOTENAME('abc[]def')
Однако пока работает следующее:
exec sp_spaceused 'STMALOGqueue'
Это не:
exec sp_spaceused QUOTENAME('STMALOGqueue')
Я получаю досадную ошибку:
Incorrect syntax near 'STMALOGqueue'
Фактический код, который я пытаюсь проверить с помощью инъекции, жестко закодирован внемного C #.Для справки:
string sp_spaceused = @"
drop table if exists #temp
create table #temp(name nvarchar(100), rows int, reserved nvarchar(100), data nvarchar(100), index_size nvarchar(100), unused nvarchar(100))
insert into #temp
exec sp_spaceused QUOTENAME('{0}')";
Я использую String.format
, чтобы вставить соответствующее имя таблицы в эту строку и затем выполнить ее.В настоящее время это не работает