Как предотвратить 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;