Comments 9
Да забудьте вы уже этот WebForms…
Я бы и рад забыть, но есть нюанс:
- WebForms еще много где используется в продакшене и усилием воли это не изменить.
- Большую часть проблем этого примера не решает использование MVC. Ок, покажу аналогичный пример для MVC на митапе.
where += String.Format(" {0} >= @min AND {0} <= @max", EncodeSqlField(field));
...
private string EncodeSqlField(string field)
{
return field.Replace("'", String.Empty)
.Replace(" ", String.Empty)
.Replace("\\", String.Empty)
.Replace(",", String.Empty)
.Replace("(", String.Empty)
.Replace(")", String.Empty);
}
Вы что это, серьёзно? В 2015-м году ручное экранирование входных параметров?
Во-первых, это скачок в прошлое, а во-вторых, где фильтр на апострофы, кавычки, двойное тире,…
Никогда больше так не делайте.
1) Покажите не ручное экранирование параметров параметров, решающее проблему;)
2) А нужен ли здесь фильтр на апострофы и кавычки? Решит ли проблему фильтр на двойное тире?
2) А нужен ли здесь фильтр на апострофы и кавычки? Решит ли проблему фильтр на двойное тире?
Список доступных полей для фильтрации решит данную проблему.
Не ручное экранирование — корректное использование SqlCommand/L2S/EF/вставьте_своё.
Первый случай если нужно контролировать маппинг типов, второй — если оставляем по-дефолту. Про l2s вообще думать не надо — просто фигачим ORM методы и проблем не знаем.
command.Parameters.Add(new SqlParameter("@min", typeof(int))).Value = min;
command.Parameters.AddWithValue("@max", max);
Первый случай если нужно контролировать маппинг типов, второй — если оставляем по-дефолту. Про l2s вообще думать не надо — просто фигачим ORM методы и проблем не знаем.
Sign up to leave a comment.
Исключительно простые задачи по AppSec .NET