OWASP содержит информацию об этой стратегии. Он всегда должен быть вариантом последних отчаянным (как описан в статье я ссылаюсь), но если это единственный вариант ...
http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
цитата из статьи о его будучи last- опция канава
Однако эта методика является хрупким по сравнению с использованием параметризованных запросов. Этот метод должен быть только с осторожностью использовать модифицированный код экономичным способом. Приложения, созданные с нуля, или Приложения, требующие низкого риска Допуск должен быть построен или , переписанный с использованием параметризованных запросов.
По сути, аргумент против такого подхода, даже если вы избежите всех известных плохих входных данных, нет никакой гарантии, что кто-то не придумает способ обойти его в будущем.
Однако, чтобы ответить на ваш вопрос конкретно ...
список символов, чтобы избежать в статье я связан выше.
Редактировать Как уже отмечалось, статья не содержит очень хороших ссылок. Однако для SQL Server это делает: http://msdn.microsoft.com/en-us/library/ms161953.aspx
Обратите внимание, что список символов, которые нужно удалить, зависит от платформы БД, но похоже, что вы используете SQL Server, поэтому это должно быть актуально. .
Цитата из статьи ниже:
Фильтрация ввода также может быть полезным в защите от инъекции SQL путем удаления управляющих символов.Однако из-за большого количества символов, которые могут создавать проблемы, это не надежная защита. В следующем примере выполняется поиск разделителя символьной строки.
private string SafeSqlLiteral(string inputSQL)
{
return inputSQL.Replace("'", "''");
}
LIKE Клаусов
Обратите внимание, что если вы используете LIKE условие, подстановочные символы по-прежнему должны быть экранированы:
s = s.Replace("[", "[[]");
s = s.Replace("%", "[%]");
s = s.Replace("_", "[_]");
ouch. обычно это 3), который должен быть изменен для предотвращения внедрения SQL. Помните, что это «SQL Injection», а не «SQL Rejection». Как только он попадает в БД, он уже должен быть очищен. Но если вы говорите, что вы не можете изменить приложение, то я думаю, вы не можете. Заинтересованы в ответах. – RPM1984