mongodb-.net-driver - 如何使用 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 本地主机|
请你帮我解决这个问题。
解决方案
任意代码可能会被注入其中一个过滤器(状态)。如果您只是期望接受字符的有限列表,我建议实施白名单
注意:我没有测试下面的代码,但我希望你能明白要点
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;
推荐阅读
- python - 使用 Q 对象的 Django AND 查询
- three.js - Three.js 模型在移动端错位
- php - Composer 版本匹配错误 laravel + spatie medialibrary
- php - 仅根据 PHP 中的 if 语句回显某些内容
- python - Python Flask 生成文本文件
- azure - Azure/Microsoft.Automation AutomationAccounts/schedules 间隔属性示例
- r - 创建包含缺失值行位置的数据框
- reactjs - React-如何在另一个反应组件中使用 GeoLocation 类
- neural-network - 如何为神经网络提供输出,以使用高斯策略方法对连续动作进行采样?
- node.js - react-scripts 使用旧版本的 node 和带有 SSL 的 npm 开始崩溃