SQL Server: Очистка @param против инжекционных нападений

Надеюсь, что элементы были в $ scope.items являются объектами, и вы пытаетесь вставить строку в этот список, чтобы он вставлялся как неопределенный.

Попробуйте поместить эти элементы, как показано ниже, в список, затем вы можете нажать любую строку, которую хотите.

public List yourmethod () {....} // to $ scope.items

7
задан Fractaliste 8 July 2014 в 14:45
поделиться

4 ответа

Использовать sp_executesql и встроенное quotename(). Эта статья, Проклятие и Благословения Динамического SQL, является в значительной степени категорической ссылкой.

10
ответ дан 6 December 2019 в 21:19
поделиться

Вместо того, чтобы вызывать ДОЛЖНОСТНОЕ ЛИЦО (@somesql), я предлагаю использовать sp_executesql хранимую процедуру. А именно, это позволяет Вам передавать параметры, и система проверит, что параметры допустимы.

1
ответ дан 6 December 2019 в 21:19
поделиться

По-видимому, существует предел с 128 длинами quotename (), даже в 2008 согласно моему тесту, так как он ожидает идентификатор SQL. Ссылка предлагает создать quotestring () функция, которая делает то же самое как:

REPLACE(@variable,'''','''''')

Поэтому я предлагаю, чтобы ответ создал функцию из ЗАМЕНЫ () выше, как так:

CREATE FUNCTION quotestring(@string nvarchar(MAX)) 
RETURNS nvarchar(MAX) AS
BEGIN
    RETURN(REPLACE(@string,'''',''''''))
END

... Если я не неправильно понял что-то.

0
ответ дан 6 December 2019 в 21:19
поделиться

Вы могли сначала запросить информацию о схеме с регулярным T-SQL и удостовериться, что имя таблицы существует сначала. Таким образом, если это - уродливый SQL, это не выполнится как код. Это просто будет имя таблицы VARCHAR.

DECLARE @Table AS VARCHAR(MAX)
DECLARE @Exists AS BIT

SET @Table = 'Vicious malformed dynamic SQL'

SELECT  @Exists = COUNT(TABLE_NAME) 
FROM    INFORMATION_SCHEMA.TABLES 
WHERE   TABLE_NAME = @Table

IF (@Exists = 1)
    BEGIN
    PRINT 'Table exists'
    -- Execute dynamic SQL.
    END
ELSE
    PRINT 'Invalid table'

(Или просто используйте, ЕСЛИ СУЩЕСТВУЕТ (ВЫБОР....)),

1
ответ дан 6 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

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