Как предотвратить SQL-инъекцию с помощью драйвера C# mongodb?

Я использую драйвер C# Mongodb для вставки / обновления данных в Mongodb. Я просканировал свой веб-API через "Qualys", и он вставлялся в одно из моих полей под названием "createdOn", и я предоставил образцы данных ниже.

1. Центрально-тихоокеанское стандартное время + (ВЫБРАТЬ 0 ИЗ (ВЫБРАТЬ
2. SLEEP(29))qsqli_1111) Центрально-тихоокеанское стандартное время ',0,0);WAITFOR
3. ЗАДЕРЖКА'00:00:29'- |ping -c2 -i91 localhost|

Не могли бы вы помочь разобраться в этой проблеме.

1 ответ

Произвольный код потенциально может быть введен в один из фильтров (статус). Я предлагаю реализовать белый список, если вы просто ожидаете конечный список допустимых символов.

ПРИМЕЧАНИЕ. Я не тестировал приведенный ниже код, но надеюсь, что вы уловили суть.

Regex regex = new Regex(@"^[a-zA-Z0-9\s,]*$");  // alphanumeric pattern

if (regex.IsMatch(status)) {
    chatSessionCollection = Db.GetCollection<ChatSessionModel(ConfigurationManager.AppSettings["chatsession"]); 
    JObject dateFilter = new JObject(); 
    jFilter.Add("botId", 1); 
    jFilter.Add("status", status); 
    var _chatSessionList = _chatSessionCollection.Find(Convert.ToString(jFilter)).ToList(); 
}   
else 
  return false;
Другие вопросы по тегам