0 голосов
спросил от в категории ASPNETC5
Никогда не делайте этого. Никогда не связывайте строки для создания команды SQL. Это дает вам широкое распространение для случайной или преднамеренной атаки SQL Injection, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает команды вроде:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, которую пользователь добавил, завершает строка в SQL, и у вас возникают проблемы. Но это может быть хуже. Если я прихожу и набираю это вместо: «x»; DROP TABLE MyTable; - «Тогда SQL получает совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Какой SQL видит три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно корректный SELECT
DROP TABLE MyTable;
Совершенно корректная команда «удалить таблицу»
--'
И все остальное - комментарий.
Таким образом, он: выбирает любые соответствующие строки, удаляет таблицу из БД и игнорирует что-либо еще.

Таким образом, ВСЕГДА используйте параметризованные запросы! Или будьте готовы регулярно восстанавливать свою БД из резервной копии. Вы делаете резервные копии регулярно, не так ли?

Исправьте это, и ваша проблема с конверсией, вероятно, исчезнет в одно и то же время.

Пожалуйста, войдите или зарегистрируйтесь чтобы ответить на этот вопрос.

Категории

Добро пожаловать на сайт DraftingCode Q&A, где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...