【发布时间】:2020-04-27 06:33:13
【问题描述】:
我正在构建这个方法,它允许构建SearchParameters 对象。其中一种方法允许指定此对象的Filter 字段。长这样(简化版)
public SearchParameters CreateWithFilter(string fieldName, string operator, string value)
{
var filterString = $"{fieldName} {operator} '{value}'";
return new SearchParameters{ Filter = filterString };
}
所以我可以这样使用它
var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo");
现在,问题是这段代码类似sql-injection易受攻击。如果我打电话给
var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo' or someField eq 1 or manufacturer eq 'volvo");
我将成为一名出色的 Azure 搜索黑客 ;)
我的问题:
Azure 搜索中是否有任何特定技术类似于 SQL 世界中已知的技术,可以让我保护代码免受这些类型的注入?
【问题讨论】:
标签: .net azure-cognitive-search azure-search-.net-sdk