在.NET/SQL 中参数化表名?

2024-02-10

正如主题所示,我希望能够使用 .NET(实际上使用哪种语言)和 SQL Server 将表名作为参数传递。

我知道如何为价值观做到这一点,例如command.Parameters.AddWithValue("whatever", whatever) using @whatever在查询中表示参数。问题是我现在的情况是希望能够对查询的其他部分(例如列名和表名)执行此操作。

这不是一种理想的情况,但这是我必须使用的情况,它不太容易发生 SQL 注入,因为只有使用代码的人才能设置这些表名称,而最终用户不能。然而它很混乱。

那么,我所问的可能吗?

编辑:为了清楚地说明 SQL 注入的要点,表名仅通过源代码传入,具体取决于情况。这是由开发者指定的。无论如何,开发人员都可以访问数据库层,所以我问的原因并不是为了安全,而是为了使代码更干净。


您不能直接参数化表名称。您可以通过以下方式间接完成sp_ExecuteSQL,但您也可以用 C# 构建(参数化)TSQL(连接表名但不连接其他值)并将其作为命令发送下来。您获得相同的安全模型(即您需要显式 SELECT 等,并假设它未签名等)。

另外 - 请务必将表名称列入白名单。

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

在.NET/SQL 中参数化表名? 的相关文章

随机推荐

  • 打瞌睡模式处理

    我正在开发一个应用程序 它使用 AlarmManager 在后台生成一些服务 时机对于我们的应用程序非常重要 并且功能不能等待下一个维护窗口的发生 要求用户将应用程序列入白名单不是问题 但不能解决暂停警报的问题 此外 电池消耗也不是一个大问
  • 有没有办法将 Facebook Presto 0.131 与 Cassandra 3.0.0 一起使用?

    使用 Presto 0 131 查询 Cassandra 3 0 0 集群时 我得到 所有尝试查询的主机均失败 snip InvalidQueryException 未配置的表 schema keyspaces 我认为这是由于 Cassan
  • 在 sqlalchemy 中使用 postgresql JSON 类型的列表

    我正在使用金字塔与 sqlalchemy pyramid tm 和 postgresql 来测试这一点 DBSession scoped session sessionmaker extension ZopeTransactionExten
  • XSLT 3.0 流式传输(撒克逊)

    我有一个很大的 XML 文件 6 GB 其中包含这种树
  • 如何在 MAC OSX 中拆分 sql?

    有没有适用于Mac的应用程序可以分割sql文件甚至脚本 我有一个大文件 必须将其上传到不支持超过 8 MB 的文件的主机 我没有 SSH 访问权限 你可以使用这个 http www ozerov de bigdump http www oz
  • 更改查询字符串中的单个变量值[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我得到了一
  • 预加载多个音频文件

    我的网页上有一个音频控件 我希望用它来根据页面的状态播放多个非常短的音频文件 我不想在播放文件时加载它们 如何在页面加载时加载所有这些文件 这是我正在做的事情的粗略想法 http jsfiddle net L0c9ccx9 20 http
  • 如何从 JSP 运行 shell?

    我的问题是不言自明的 我想使用按钮从 JSP 运行一个 shell 即调用一个过程 程序是 CREATE OR REPLACE PROCEDURE DEMO PRC dist IN variable mrno IN variable yr
  • 使用增强赋值将字符串添加到列表

    gt gt gt b gt gt gt c 1234 gt gt gt b c gt gt gt b 1 2 3 4 gt gt gt 这里发生了什么 这应该行不通 对吧 或者我错过了一些明显的东西 gt gt gt b gt gt gt
  • MongoDB 更新嵌套数组中的字段

    MongoDB 更新嵌套数组中的字段 如何将 播放 设置为 播放照片 photos array 我只知道它的 id id ObjectId 4f41a5c7c32810e404000000 albums id ObjectId 4f545d
  • 如何在 Docker 上发布 UDP 端口?

    如何将 UDP 端口从 Docker 容器转发到主机 使用 p 标志并添加 udp端口号的后缀 p 53160 53160 udp 完整命令 sudo docker run p 53160 53160 p 53160 53160 udp p
  • Spring Boot 始终使用相同的配置文件

    我正在使用 spring boot 1 5 2 并使用配置文件 但我发现了一个非常奇怪的事情 my spring boot resources folder like this application yml 中的配置 spring pro
  • 如何在 AFNetworking 2.0 中设置请求超时和缓存策略?

    我正在遵循给定的示例代码 AFHTTPRequestOperationManager manager AFHTTPRequestOperationManager manager manager GET http example com re
  • Azure Functions - 监视器 - 我可以恢复旧视图吗?

    在 Azure Functions 中 Azure 门户中的监视器视图已更改为显示 配置应用程序洞察 如何恢复旧的简单视图 第二次更新 2 x 运行时不会将日志 由 ILogger 提供 发送到使用的表Azure WebJobs Dashb
  • 如何从文件中删除 xml 元素?

    在 XML 文件中 例如
  • 使用 javascript 验证 MVC3 中的表单

    我只需要一个验证示例 剩下的我会做 假设我有一个文本类型的输入 p p
  • 如何在Eclipse中制作只读编辑器(Eclipse插件开发)

    我想知道如何制作一个真正只读的 Eclipse 编辑器 我的编辑器扩展了文本编辑器 所以当我重新实现方法时是可编辑的总是回来false 这是最简单的方法 可以防止用户在编辑器中打开的文档中键入或删除任何内容 但您仍然可以更改文档的内容 例如
  • 将名称添加到 Spree Devise 注册中

    我正在尝试添加姓名和出生日期来设计 Spree 注册 我已经安装了宝石 gem spree auth devise github spree spree auth devise branch 3 0 stable 创建了迁移 class A
  • Xamarin.Forms:如何设置“GestureRecognizers”样式

    这可能是一个愚蠢的问题 但我只是想知道 因为我是 Xamarin forms 的新手 我们可以在 Style 中设置 GestureRecognizers 吗 例如 我想为标签创建一个样式 如下所示 但它显示编译时错误 无法解析标
  • 在.NET/SQL 中参数化表名?

    正如主题所示 我希望能够使用 NET 实际上使用哪种语言 和 SQL Server 将表名作为参数传递 我知道如何为价值观做到这一点 例如command Parameters AddWithValue whatever whatever u