当前位置: 首页 > 面试题库 >

在C#中安全地生成SQL查询

魏刚豪
2023-03-14
问题内容

在C#中生成SQL查询的最安全的方法是什么,包括清除用户输入以防止注入?我正在寻找使用不需要外部库的简单解决方案。


问题答案:

使用Sql参数:

http://msdn.microsoft.com/zh-
cn/library/system.data.sqlclient.sqlparameter(v=vs.80).aspx

这是C#中的示例

SqlCommand tCommand = new SqlCommand();
tCommand.Connection = new SqlConnection("YourConnectionString");
tCommand.CommandText = "UPDATE players SET name = @name, score = @score, active = @active WHERE jerseyNum = @jerseyNum";

tCommand.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.VarChar).Value = "Smith, Steve");
tCommand.Parameters.Add(new SqlParameter("@score", System.Data.SqlDbType.Int).Value = "42");
tCommand.Parameters.Add(new SqlParameter("@active", System.Data.SqlDbType.Bit).Value = true);
tCommand.Parameters.Add(new SqlParameter("@jerseyNum", System.Data.SqlDbType.Int).Value = "99");

tCommand.ExecuteNonQuery();


 类似资料:
  • 问题内容: 用例:“我忘记了密码”按钮。我们找不到用户的原始密码,因为它以散列形式存储,因此唯一要做的就是生成一个新的随机密码,然后通过电子邮件发送给他。这就要求使用密码无法预测的随机数,而mt_rand不够好,因此通常我们不能假定托管服务将提供对操作系统的访问权以安装密码随机数模块等。因此,我在寻找一种方法在PHP本身中生成安全的随机数。 到目前为止,我提出的解决方案包括存储初始种子,然后针对每

  • 问题内容: 我正在尝试使用python的db-api汇编以下SQL语句: 其中BEGINNING_OF_STRING应该是一个python var,可以通过DB-API安全地填写。我试过了 我没有主意;正确的方法是什么? 问题答案: 如果可以的话,最好将参数与sql分开。然后,您可以让db模块处理参数的正确引用。

  • 问题内容: 我想在userpost上实现SO类标签。我有一个名为tag_data的表,其中的列为idId,title,count。我有一个单独的表,该表链接了帖子与其可能使用的许多标签之间的关系。 继承人的问题,我如何获得当前计数,将其增加或减少一并安全地存储它。因此,在我选择和更新之间,没有其他连接/线程会更新它吗? 问题答案: 我假设您还想要新的计数,否则,这毫无疑问,只需更新set coun

  • 问题内容: 有没有办法像在开发中一样查看生产环境中从Rails生成的所有查询? 问题答案: 是的你可以。如果进入config / environments / production.rb文件,则有类似以下内容的部分: 取消注释config.log_level行,您将在生产中获得与在开发中相同的日志。

  • Hibernate 版本 4.2.3.Final 是否支持类型安全的本机命名查询?我得到这个例外与一个: 当我使用Query类执行此查询时,一切都很好。TypeQuery似乎是这里的问题,异常不是很有帮助。我已经尝试过对非常复杂的查询进行简单查询,除非我将Query用于命名的本机查询,否则它们似乎都失败了。

  • 问题内容: PHP的函数不能提供良好的随机数。因此,我开始使用据说效果更好的产品。但是这些结果有多好?有什么方法可以再次改善它们? 我的点子: 这应该给您“完美的”随机数,不是吗? 问题答案: 伪随机数生成器(PRNG)是非常复杂的野兽。 没有真正的“完美”随机数生成器-实际上,可以通过数学函数完成的最好的操作是伪随机数-对于大多数意图和目的,它们似乎足够随机。 实际上,从PRNG返回的数字中执行