- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
使用动态 LINQ 库 ( link ),是否容易受到注入(inject)攻击?以及(如果是)如何防止这种情况发生?
一些背景来自 Security Considerations (Entity Framework) :
LINQ to Entities injection attacks:
Although query composition is possible in LINQ to Entities, it is performed through the object model API. Unlike Entity SQL queries, LINQ to Entities queries are not composed by using string manipulation or concatenation, and they are not susceptible to traditional SQL injection attacks.
由于动态 SQL 是使用字符串组成的,这是否意味着它可能容易受到注入(inject)向量的影响?或者 LINQ to SQL 会根据动态 LINQ 库中的基础数据类型自动处理您的值参数化吗?
或者它是否完全安全,因为动态查询将在内存中执行而不是针对 SQL(从而抵消了 SQL 索引的任何好处)?
我一直在努力理解 DynamicLibrary.cs
代码,但我确信我很容易忽略某些东西。
因为这个问题是关于动态 LINQ 库本身的,这个问题可以被认为适用于 linq-to-sql
和 linq-to-entities
(尽管以上引用 Entity Framework )。
最佳答案
好吧,我不同意在 Dynamic Linq 中无法进行注入(inject)。
answer 中描述的内容通过 Ɖiamond ǤeezeƦ是正确的,但适用于在给定语言(C# 或 VB.Net)中构造的标准 Linq,或者通过使用 lambda 函数调用 .Where
等扩展方法。
然后,是的,不可能注入(inject)任何东西,因为 .NET Linq to Sql 转换器当然写得很好。因此,“SQL 注入(inject)”是不可能的,这是事实。
但是,Dynamic Linq 可能发生的是“Linq 注入(inject)”攻击。在OP引用的linq安全性解释中,指出:
LINQ to Entities queries are not composed by using string manipulation or concatenation, and they are not susceptible to traditional SQL injection attacks.
基本上这是一个要点。如果查询是由字符串操作组成的,那么它很容易受到注入(inject)攻击。而Dynamic Linq实际上是由字符串组成的,因此很容易受到注入(inject)攻击。
显然,攻击者必须意识到您正在使用 DynamicLinq 并且可能只攻击准备数据,因此它会导致有效的恶意 Dynamic Linq 查询。
我想强调这个事实——最终的SQL是安全组成的,但是原始的dynamic Linq是否安全取决于你。
确保动态 linq 查询安全的必要条件是对所有用户输入 使用占位符。永远不要连接你的字符串!
想象一下下面的查询:
dataset.Where("allowed == 1 and code == \"" + user_entered_data + "\"");
如果输入未经过过滤且未转义,攻击者可能会输入:
200" or allowed == 0 and code == "200
这将导致:
allowed == 1 and code == "200" or allowed == 0 and code == "200"
为了避免这种情况,您应该使用占位符:
dataset.Where("allowed == 1 and code == @0", user_entered_data);
DynamicLinq 将使占位符(在这种情况下:用户输入的数据)成为 lambda 参数(而不是将其连接到查询中)并依赖于 Linq-To-Entities(或任何后端)安全地转换为 SQL。
关于c# - 是否可以通过 Dynamic LINQ 进行注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738953/
如何将多个json对象添加/映射到dart对象 import 'dart:async'; import 'dart:convert'; import 'package:flutter/foundati
我正在研究将产品集成到 Dynamics Great Plains 中。我之前使用过 Dynamics CRM,但没有使用过 Great Plains。我听说 GP 与 CRM 是不同的动物,即使它们
System.Linq.Dynamic.Core 和 System.Linq.Dynamic 有什么区别?我目前正在使用 System.Linq.Dynamic 并且它不包含对 的支持选择 和 多选
我正在尝试通过Firebase存储将图像上传到Firebase,然后在Firestore中创建一个文档,其中包含上述上传图像的网址。为此,我使用此功能 void uploadImageAndCr
我一直在尝试整理一些东西,使我可以从 ListPlot 中提取点,以便在进一步的计算中使用它们。我目前的方法是使用 Locator[] 选择点。这适用于显示点,但我无法弄清楚如何从带有 head Dy
只要我在与 Program 类相同的程序集中有类 ClassSameAssembly ,下面的代码就可以正常工作。但是,当我将类 ClassSameAssembly 移动到单独的程序集时,会引发 Ru
我只是尝试从Firebase实时数据库解析数据。 但在转换为模型时有问题 我正在尝试从Flutter上解析Firebase数据库中的数据。 但是一个错误说 MY Complete QUIZ: {-M5
我创建了一个方法,当我构建它时,出现了这个错误: type '_InternalLinkedHashMap' is not a subtype of type 'List' in type cast
我对这个 flutter 的简单图表代码有疑问。在我尝试运行代码时显示此错误。请任何人都可以帮助我在这.... The argument type 'List>' can't be assigned
我尝试在我的 flutter 应用程序中解析来自 Firestore 的文档。 Firestore 文档: 我创建了两个类来解析这个文档。 类产品: class Produkt{ String n
我有一个2d-List,其中包含一个字符串和一个Map,如下所示: List> content = [ [ "String", { "one": 23,
我使用 Dart“json_serializable”包在 Flutter 应用程序中的 Firestore 数据结构下反序列化。 { googleBookId: jjl4BgAAQBAJ, prov
我注册了 Dynamic CRM 在线试用版(30 天)并创建了一个非托管自定义解决方案(新字段、一些自定义实体等)。现在,我想导出非托管解决方案并将其导入到我的服务器中的 Dynamic CRM O
当我尝试从 StreamTransform 获取一些数据时遇到一些问题 我不明白什么是正确的数据类型 未捕获的异常:类型错误:“_StreamHandlerTransformer”的实例:“_Stre
我正在尝试获取用户数据,但在这样做时出现以下错误: Exception: type '_InternalLinkedHashMap' is not a subtype of type 'Map 我查看
我正在尝试在 sqflite 数据库中保存一些带有 flutter 的数据,但我仍然收到一条错误消息: [ERROR:flutter/shell/common/shell.cc(181)] Dart
我有一个JSON响应,结构如下:。在这个JSON响应中,有各种动态键,如“Owner”和“Master”,每个键都包含一个JSON对象或一个JSON对象数组。我需要创建一个gson数据类来解析这个动态
在 Dynamics 2012 ax 中编译 CIL 时,我看到以下错误 - 名称为“Dynamics.Ax.application”的重复类型。在程序集中“Dynamics.Ax.applicati
我有一个带有 LinkedHashMap 成员的 StatefulWidget 小部件,如下所示: LinkedHashMap _items = new LinkedHashMap>(); 现在我需要
我正在尝试按照此处所述实现搜索资源功能:https://cloudblogs.microsoft.com/dynamics365/it/2019/05/21/retrieve-resource-ava
我是一名优秀的程序员,十分优秀!