代码之家  ›  专栏  ›  技术社区  ›  Justin Helgerson

这个存储过程对SQL注入安全吗?

  •  4
  • Justin Helgerson  · 技术社区  · 15 年前

    存储过程如下:

    CREATE PROCEDURE Foo
        @bar varchar(100)
    AS
    
    SELECT * FROM tablename
    WHERE columnname LIKE '%' + @bar + '%'
    

    2 回复  |  直到 15 年前
        1
  •  7
  •   Abe Miessler    15 年前

    如果您使用的是C,并且您的代码如下所示:

    SqlCommand command = new SqlCommand("Foo", connection);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@bar", myTextBox.Text);
    

    如果是这样的:

    SqlCommand command = new SqlCommand("EXEC Foo '" + myTextBox.Text + "'", connection);
    

    那就不要了!

        2
  •  4
  •   Zachary    15 年前

    就像“%” 将默认返回数据库中的所有内容。