Я хочу защитить БД от атак SQL Injection, и я заметил, что сообщение http://www.dascode.net/post/2009/11/01/An-example-of-how-to-check-for-SQL-Injections.aspx может быть полезно.C# string и sql injection
Вот сценарий (я использую Entity Framework)
1) пользователь хочет добавить, например, комментарий вроде «Я хочу выбрать книгу, а затем открыть ее и получить символ».
фрагмент кода (пример):
string commVal = "lorem";
using(DB ctx = new DB())
{
Comment c = new Comment { Value = commVal };
ctx.Comment.Add(c);
ctx.SaveChanges();
}
Как вы можете видеть, это не SQL Injection, но эта строка содержит нежелательные слова - select
, open
, char
. Итак, единственный способ предотвратить внедрение SQL Injection - добавить кавычки вокруг этих нежелательных слов?
Как вы строите запрос? Опубликуйте код - я подозреваю, что вы уже используете параметризованный sql, и в этом случае это не будет проблемой. http://msdn.microsoft.com/en-us/library/cc716760(v=vs.110).aspx – Alex
** Только надежный ** способ избежать SQL-инъекции - использовать ** параметризованные запросы **. Даже не начинайте пытаться «очищать запрос» самостоятельно - вы всегда будете ** пропустить что-то ... просто используйте параметризованные запросы, и ваши проблемы уйдут! –
Эта лошадь была мертвой в течение долгого времени: http://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html – Faust