首页 > 解决方案 > 如何使用 C# mongodb 驱动程序防止 SQL 注入?

问题描述

我正在使用 C# Mongodb 驱动程序在 Mongodb 中插入/更新数据。我已经通过“Qualys”扫描了我的 web api,它被插入到我的一个名为“createdOn”的字段中,我在下面提供了示例数据。

1. 中太平洋标准时间 + (SELECT 0 FROM (SELECT
2. SLEEP(29))qsqli_1111) 中太平洋标准时间',0,0);WAITFOR
3. DELAY'00:00:29'- |ping -c2 - i91 本地主机|

请你帮我解决这个问题。

标签: mongodb-.net-driverqualysnosql-injection

解决方案


任意代码可能会被注入其中一个过滤器(状态)。如果您只是期望接受字符的有限列表,我建议实施白名单

注意:我没有测试下面的代码,但我希望你能明白要点

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;

推荐阅读