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

.NET中的SQL注入预防

梁丘逸仙
2023-03-14
问题内容

我通常在.NET中这样写我的SQL

sql.Append("SELECT id, code, email FROM mytable WHERE variable = @variable ");

然后执行以下操作:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString))
{
    using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn))
    {
        myCommand.Parameters.AddWithValue("@variable", myVariableName");
        ...

但是,当我获得的数据直接来自数据库时,我也应该这样做addParameter吗?

likesql.Append(string.Format("SELECT group_id, like_text FROM likeTerms ORDER BY group_id ASC "));

DataTable dtLike = SqlHelper.GetDataTable(likesql.ToString());

foreach (DataRow dr in dtLike)
{
    buildsql.Append(".... varId = " + dr["group_id"].ToString() + "...");

    ...

这可以接受吗?什么是最佳做法?


问题答案:

您应该始终使用参数:

  • 数据库中的值从哪里来?
  • 在您的示例中,您可以相信’group_id’未被修改为您所不期望的吗?

信任任何人

具有有限数据库访问权限的人可以直接注入其他地方使用的字段吗?

表现

此外,它还有助于提高性能。缓存的执行计划将忽略该参数的值,这意味着您可以避免每次参数更改时都重新编译查询。



 类似资料:
  • 本文向大家介绍PHP简单预防sql注入的方法,包括了PHP简单预防sql注入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP简单预防sql注入的方法。分享给大家供大家参考,具体如下: 出现sql注入一般都是因为语法不规范不严谨造成的,问题出现在sql语句上,而起决定性的是quote(')。如下: 正常提交的话就是删除一条数据,若id提交的是(1 ' or 1 #),那么sql语

  • 问题内容: 如何防止将JavaScript NoSQL注入MongoDB? 我正在开发Node.js应用程序,并且将json对象(即json对象)传递到了mongoose模型的save函数中。我以为幕后有保障措施,但事实并非如此。 问题答案: 注意 我的答案不正确。请参考其他答案。 - 客户端程序在MongoDB中组装查询时,将构建BSON对象而不是字符串。因此,传统的SQL注入攻击不是问题。 有

  • 问题内容: 我听说将ADO.NET SQLParameter(参数化查询)用于SQL Server时仍然可以进行SQL注入。 我正在寻找C#/ VB代码中的真实示例作为证明。 编辑:我正在寻找特定的工作示例。没有介绍SQL注入或如何防止它。 问题答案: 如果要在存储的proc中创建语句并使用sp_executesql,则参数化查询是错误的安全网。

  • 是否可以像PHP准备语句那样防止SQL注入Node.js(最好是使用模块)。 如果是,怎么做?如果不是,有哪些例子可以绕过我提供的代码(见下文)。 某些上下文: 我正在使用node-mysql模块制作一个具有由node.js+MySql组成的后端堆栈的web应用程序。从可用性的角度来看,这个模块很棒,但是它还没有实现类似于PHP准备好的语句的东西(尽管我知道它在todo上)。 根据我的理解,PHP

  • 我的Checkmarx报告在我的Spring Boot应用程序中将此方法标记为高严重性二阶SQL注入: 根据Checkmarx: ... 应用程序通过在查询中嵌入不受信任的字符串来构造此SQL查询,而无需进行适当的清理。连接的字符串被提交到数据库,并在数据库中进行相应的分析和执行。 setActive('Y')行似乎是问题所在。 我在Spring Data JPA使用中找到的数据清理指南建议使用从

  • 主要内容:SQL 注入的危害,SQL 注入示例,防止 SQL 注入SQL 注入是一种代码渗透技术,是最常用的网络黑客技术之一。SQL 注入非常危险,可能会导致数据库中的数据被暴露,甚至被损坏。 通过网页输入框(<input> 标签、<textarea> 标签等)将恶意 SQL 代码提交给服务器是最常见的 SQL 注入方式之一。 当网站要求输入诸如用户名(用户ID)之类的内容时,通常会发生 SQL 注入。黑客会输入一条 SQL 语句,而不是用户名/用户ID,当页面