SQL Server - динамическая СВОДНАЯ ТАБЛИЦА - внедрение SQL

Диграфы были созданы для программистов, которые не имели клавиатуры, которая поддерживала набор символов ISO 646.

http://en.wikipedia.org/wiki/C_trigraph

17
задан Robin Day 17 September 2009 в 14:55
поделиться

1 ответ

Мы проделали много работы, аналогичной вашему примеру. Мы не беспокоились о запрете SQL, отчасти потому, что у нас есть полный и полный контроль над перемещаемыми данными - вредоносный код просто не может попасть через ETL в наше хранилище данных.

Некоторые мысли и советы:

  • ] Требуется ли поворот со столбцами nvarcahr (500)? У нас - varchar (25) или числа, и было бы довольно сложно пропустить через них вредоносный код.
  • Как насчет проверки данных? Похоже, что если одна из этих строк содержала символ "]", это либо попытка взлома, либо данные, которые все равно взорвут вас.
  • Насколько надежна ваша безопасность? Система заблокирована так, что Малори не может проникнуть в вашу базу данных (напрямую или через ваше приложение)?

Ха. Все это потребовалось написать, чтобы запомнить функцию QUOTENAME (). Быстрый тест, казалось бы, показывает, что добавление его в ваш код подобным образом будет работать (вы получите сообщение об ошибке, а не отброшенную временную таблицу):

SELECT
        @columns = 
        STUFF
        (
                (
                        SELECT DISTINCT
                                ', [' + quotename(ColumnB, ']') + ']'
                        FROM
                                #PivotTest
                        FOR XML PATH('')
                ), 1, 1, ''
        )

Это должно работать для ситуаций поворота (и отмены поворота), поскольку вы почти всегда должны [заключить в скобки] ваши ценности.

16
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: