C#/。NET(核心):类型系统是否足够安全以防止SQL注入?

福尔沃斯滕

我正在使用EF Core的项目中工作;在一种特定情况下,我必须使用原始SQLite命令更新实体的身份。

构建SqlCommand并执行由于某种原因而无法执行的操作,以及直接将参数传递给ExecuteSqlCommand(),它总是会引发异常(我想这是当前Sqlite驱动程序中的错误)。

但是,从理论上讲,以下代码不应

string commandText = $"UPDATE {table} SET Id={idPair.Value} WHERE Id={idPair.Key};";

已经阻止了SQL注入,因为这里

  • table 是我直接从DbContext模型获得的表名
  • idPair 保证是 KeyValuePair<int, int>

我主要是问,因为我不知道该抑制该特定警告,还是尝试以其他方式进行处理(无论如何,在EntityFrameworkCore.Sqlite上打开错误报告)。

a安

只要所讨论的类型不能在结果SQL中转换为有害的内容,就可以。只要记住,这很容易,一年后得出这样的代码,而没有意识到有字面上对SQL注入没有保护,并错误地添加的东西,可以是危险的。也许有人决定将您所有的键都更改为字符串。关键是没有什么可以帮助您识别潜在的问题-没有编译器错误,没有运行时错误,一切都会像以前一样工作,直到有人滥用漏洞为止。就是说,尽管您可以依赖于一个int永远不会包含任意string的类型系统,但并不能保证一年后idPair仍会存在KeyValuePair<int, int>

另外,我永远不会说做坏事绝对不可能的。到目前为止,这种权衡通常偏向于参数化查询,因此没有理由不使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Doctrinepersist()是否可以防止SQL注入?

Querydsl 是否可以防止 SQL 注入

Spring中的SimpleJdbcTemplate是否可以防止SQL注入?

是否有必要验证输入以防止SQL注入?

Knex.js是否可以防止SQL注入?

Spring Data JPA是否可以防止SQL注入

C#字符串参数可以防止注入?

如何安全地检索数据以防止SQL注入

XML解析器是否可以防止.NET Core中的XML外部实体(XML)注入?

PDO准备好的语句是否足以防止SQL注入?

ActiveRecord :: ConnectionAdapters :: OracleEnhancedAdapter#quote是否可以防止SQL注入?

使用WordPress的get_results()数据库函数是否可以防止SQL注入

PetaPoco的Query(字符串查询,参数)方法是否可以防止SQL注入?

htmlspecialchars是否足以防止对用单引号引起来的变量进行SQL注入?

使用 PDO 准备好的语句和 htmlspecialchars 是否足以防止 XSS 和 SQL 注入?

Java / Hibernate Criteria Query API是否可以防止注入?

repr是否足以防止在Python中注入shell?

传递键值对还可以防止SQL注入攻击吗?

Java-转义字符串以防止SQL注入

准备语句的正确顺序以防止用户输入的SQL注入

在Laravel中保护原始SQL查询以防止注入

SQLite如何转义值以防止SQL注入

在这种情况下,C#泛型是否可以防止结构自动装箱?

C# 是否应该取消订阅静态类中的静态事件以防止内存泄漏?

我安全吗?[试图防止SQL注入]

Command.Parameters.Add() 如何防止 SQL 注入?C#

添加安全标头以帮助防止c#asp.net中的注入攻击

为了防止sql注入,将mysqli_real_escape_string()仅应用一次以逗号分隔的字符串是否足够?

是否可以防止用户在后台运行C ++程序?