Добрый день, товарищи, программисты, здесь я столкнулся с ошибкой. Вы видите, что мой поиск завершается сбоем, когда я ввожу случайные символы, например следующие:% ^ & * &%. Вот ошибка и код поиска, см. Ниже:
Ошибка сервера в приложении '/'
Ошибка в операторе Like: шаблон строки "% $% ^ $ & ^%" недействителен.
Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.
Сведения об исключении: System.Data.EvaluateException: ошибка в операторе Like: шаблон строки "% $% ^ $ & ^%" недействителен.
Ошибка источника:
Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.
Трассировки стека:
И код такой:
public static bool IsDate(Object obj) { string strDate = obj.ToString(); try { DateTime dt = DateTime.Parse(strDate); if (dt != DateTime.MinValue && dt != DateTime.MaxValue) return true; return false; } catch { return false; } } protected void BtnWinnersSearch_Click(object sender, EventArgs e) { string searchText = txtWinnersSearch.Text.Replace("'", "''").Trim(); bool isDate = IsDate(searchText); GridViewWinners.Visible = true; if (isDate == true) { SqlDataSource4.FilterExpression = "dob" + " ='" + Convert.ToDateTime(searchText).ToString("yyyy-MM-dd") + "'"; } else { SqlDataSource4.FilterExpression = "nickname like '%" + searchText + "%' or username like '%" + searchText + "%' or clubnumber like '%" + searchText + "%' or firstname like '%" + searchText + "%' or lastname like '%" + searchText + "%' or email like '%" + searchText + "%'"; } }
Прямо сейчас ваш код уязвим для атаки с использованием SQL-инъекции.