Любая проблема безопасности, позволяющая апострофить имя псевдонима столбца SQL из Pivot? - PullRequest
0 голосов
/ 23 сентября 2018

Это что-то вроде Select t.value as [silly ' name %'] from Test_Table t, где [silly ' name%'], полученный от пользователя, представляет угрозу безопасности?

Проект, над которым я работаю, позволяет пользователям переупорядочивать данные через sql pivot, делая вводзначения будут столбцами.Прямо сейчас мы «экранируем» имена столбцов, заключая в двойные кавычки любые одиночные галочки, что приводит к сбою запроса, поскольку он не соответствует фактическому тексту в таблице.Есть ли какие-либо проблемы с экранированием , а не ?

Я тестировал простое внедрение SQL в качестве имени столбца, и это, похоже, не проблема.

Редактируем, мы заключаем скобки в квадратные скобки, поэтому ввод, как

  silly] from Test_Table t; drop table Test_Table;

, станет

  select [silly]] from Test_Table t; drop table Test_Table;] 

1 Ответ

0 голосов
/ 24 сентября 2018

На основании: https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2017 и https://docs.microsoft.com/en-us/sql/t-sql/statements/set-quoted-identifier-transact-sql?view=sql-server-2017 мое мнение таково, что, пока вы предоставляете имена столбцов в формате

SELECT 1 AS 'Some Name'

и помните escapeодинарные кавычки (удвоить их) вы должны быть в безопасности.

Примеры:

SELECT 1 AS 'The level for job_id: %d should be between %d and %d.' 
SELECT 1 AS 'silly] from Test_Table t; drop table Test_Table; --'
SELECT 1 AS ']][["'
SELECT 1 AS '''; SELECT 1 --'
SELECT 1 AS 'SELECT 1 / 0'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...