.net 过滤器中的类SQL注入
我正在构建这个方法,它允许构建.net 过滤器中的类SQL注入,.net,azure-cognitive-search,azure-search-.net-sdk,.net,Azure Cognitive Search,Azure Search .net Sdk,我正在构建这个方法,它允许构建SearchParameters对象。其中一种方法允许指定此对象的过滤器字段。它看起来像这样(简化版) 所以我可以这样使用它 var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo"); 现在的问题是,这段代码像sql注入一样易受攻击。如果我打电话 var searchParameters = this.CreateWithFilter("manufacturer", "e
SearchParameters
对象。其中一种方法允许指定此对象的过滤器
字段。它看起来像这样(简化版)
所以我可以这样使用它
var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo");
现在的问题是,这段代码像sql注入一样易受攻击。如果我打电话
var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo' or someField eq 1 or manufacturer eq 'volvo");
我将成为一名伟大的Azure搜索黑客;)
我的问题:
Azure Search中是否有与SQL world中已知的类似的特定技术,允许我针对这些类型的注入保护代码?很好,如果您从外部/不受信任的源获取字符串,则使用这些创建查询字符串永远都不安全 在SQL中,建议尽可能使用参数化查询(例如,从表中选择*,其中字段>@param)。不幸的是,Azure Search在这样的查询中没有参数 Azure搜索的另一种方法是小心地转义启用注入的特殊字符。一个简单的起点是:
var searchParameters = this.CreateWithFilter("manufacturer", "eq", "volvo' or someField eq 1 or manufacturer eq 'volvo");