实体框架的 SQL 运算符函数是否可以安全防范 SQL 注入?

2024-03-29

这些函数可以访问 SQL 中的特殊函数 (SqlClient)。例如“喜欢”或“之间”。他们还为它们提供了更好的通用抽象层。不要与存储过程“函数”混淆,这是另一篇文章的主题question https://stackoverflow.com/questions/11107456/do-entity-framework-functions-automatically-escape-input-to-protect-against-inje.

我似乎找不到完整答案的问题是。它们可以安全使用吗?或者我是否将系统开放给其他人?SQL注入攻击 http://en.wikipedia.org/wiki/SQL_injection?在编写常规 SqlCommand 时,我总是使用绑定变量。

但在转向实体框架时。对 SQL 语句的控制较少。我不介意,但当我连接来自浏览器的字符串并将其传递给函数时,我不禁担心。

这是一个例子:

var QueryResult = EFContext.Table.Where(x => 
    SqlFunctions.PatIndex("%" + Potentially_unsafe_search_keyword + "%", 
                          x.Column) > 0);

我做了一些测试并跟踪了发送到服务器的实际 SQL。单引号会自动转义。很明显那里有一些保护。正在进行一些消毒工作。 Insert 语句确实使用绑定变量。我应该对单引号替换感到满意吗?幕后还有其他事情发生吗?


Linq 中的每个常量、变量、参数都作为 IDbCommand 中的命令参数传递,而 IDbCommand 又由底层驱动程序转义。

除非存在错误,否则所有 EF 查询和 SQL 帮助器函数都可以安全地抵御 SQL 注入攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架的 SQL 运算符函数是否可以安全防范 SQL 注入? 的相关文章

  • 跳转到文件行c#

    我如何跳到文件中的某些行 例如 c text txt 中的第 300 行 using var reader new StreamReader c test txt for int i 0 i lt 300 i reader ReadLine
  • 用 C 语言制作查找表的最佳方法是什么?

    我正在开发一个嵌入式 C 项目 我有一个 LCD 显示屏 每个字符都有一个 5x7 点阵 要显示特定字符 您必须移动与要打开的点相关的 5 个字节 所以我需要制作某种带有键的查找表 我可以在其中传递 ASCII 字符 并返回一个 5 字节的
  • 为什么 strcat() 之后字符串会被改变?

    这是源代码 int main char str dance char str1 hello char str2 abcd strcat str1 str2 printf s str output bcd why str更改后strcat s
  • 解决方案将无法构建,因为它无法从服务生成的类型转换为我的类型

    我有一个 WCF 服务项目 它构建得很好 可以生成可访问的 WSDL 并且 svcutil exe 不会生成任何错误 我有一个访问该 Web 服务的 服务管理器 项目 并且我已成功向其中添加了服务引用 ABCService 第三个项目包含我
  • 有没有办法在 .Net 中创建“自托管”网站? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 类似于 WCF 自托管 有没有办法创建一个在控制台应用程序中 自托管 的网站或dll 提出这个问题的方
  • 调试Windows服务

    Scenario 我有一个用 C 编写的 Windows 服务 我已经阅读了所有关于如何调试它的谷歌线程 但我仍然无法让它工作 我已经运行 PathTo NetFramework InstallUtil exe C MyService ex
  • 如何在 Google 日历中创建“recurData”?

    我想使用 Google API 创建日历的重复事件 我正在关注链接 谷歌日历API http code google com apis calendar data 2 0 developers guide dotnet html Creat
  • 初始化影子变量

    标准中是否有任何内容定义从它隐藏的变量初始化变量 例如 int i 7 int i i Visual Studio 2013 允许这样做而不发出警告并按预期工作 内在i变量是 7 然而 Clang 和 GCC 给我一个警告 关于从自身初始化
  • 是否可以将向量的一部分作为向量发送给函数? [复制]

    这个问题在这里已经有答案了 我想看看是否可以将向量的一部分传递给函数 以便它显示为函数的法线向量 更重要的是 我希望这可以在 O 1 的常数时间内完成 我不想迭代向量来创建一个新向量 事实上 我还希望在下面的示例中将新向量的大小更改为 40
  • 公开 ASP.NET 用户控件中的复杂属性

    我想从自定义 ASP NET 用户控件公开一个复杂的属性 可以通过aspx页面中的控制标签来设置 像这样的事情 public class TestData public int X public int Y public partial c
  • 无法使用 process.ErrorDataReceived c# 获取进程错误输出

    我已经建立了Form我使用了一段时间的应用程序 现在我想捕捉StandardError我的流程及其standartOutput 我查看了答案SO and MSDN https msdn microsoft com en us library
  • fgets 和 fread 之间的区别

    我有以下代码 include
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • C 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“char (*)[100]”

    过去几天我正在用 c 进行练习 并且收到此警告 如标题所示 我已经尝试了很多东西 但我真的不知道如何准确地解决这个问题 我不擅长编程 所以会有错误 以下是我正在使用的结构 无法更改 因为它们就是这样给出的 typedef struct bo
  • 如何声明和定义具有推导类型的静态成员?

    我需要定义一个具有复杂 许多模板参数 类型的静态成员 不是 constexpr 因此 希望有这样的东西 struct X static auto x makeObjectWithComplexType 但它不是 C 所以我尝试解决它 并认为
  • 将引用托管代码中分配的内存的指针传递给非托管代码

    我在 C 中分配了一个大的 char 缓冲区 并且希望将指向此数据的指针传递给 DLL 中的未管理的 c 函数 现在我认为要使其工作 必须修复字符缓冲区 以便 GC 在函数工作时无法移动它 如果是这样 我会声明缓冲区已固定并调用 UNSAF
  • Plink 通过 C# 返回不需要的字符

    通过 C 使用 Plink 时 我在结果前后收到不需要的字符 Command ls l informatica tgtdynamicparams out grep vaulttest grep Sep 1 awk print 9 sort
  • 生成唯一随机数的智能方法

    我想生成 00000001 到 99999999 范围内的唯一随机数序列 所以第一个可能是 00001010 第二个可能是 40002928 等等 最简单的方法是生成一个随机数并将其存储在数据库中 下次再执行一次并检查数据库中该数字是否已存
  • C++ 模板类问题中的类型条件

    使用海湾合作委员会4 2 我有这个条件类型的元模板 template

随机推荐