Параметризованные запросы. Используйте их везде, где у вас есть запрос, и ваш пользователь может ввести любой символ, который ему особенно нравится.
Если вы используете ORM, это в значительной степени для вас, но если нет, то вам нужно сделать что-то вроде этого:
comm.CommandText = "insert into MyTable (col1, col2) values (@col1, @col2)";
comm.Parameters.AddWithValue("@col1", 123);
comm.Parameters.AddWithValue("@col2", "; drop table whatever; --");
comm.ExecuteNonQuery();
Этот запрос на 100% безопасен для запуска до тошноты. Пусть .NET просто обработает параметры для вас, и все будет готово.
Кроме того, убедитесь, что вы используете nvarchar
(Unicode) столбцы вместо varchar
, если ваши пользователи будут вставлять символы за пределы набора символов ANSI.