参数化查询如何帮助防止SQL注入?

在查询1和2中,来自文本框的文本都插入到数据库中。这里的参数化查询有什么意义?

  1. txtTagNumber作为查询参数传递

    SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars " +"VALUES(@TagNbr);" , conn);

    cmd.Parameters.Add(“@TagNbr”, SqlDbType.Int);

    cmd.Parameters[“@TagNbr”].Value = txtTagNumber.Text;

  2. txtTagNumber在构造查询之前转换为整数

    int tagnumber = txtTagNumber.Text.ToInt16(); /* EDITED */

    INSERT into Cars values(tagnumber.Text); / then is it the same? /

另外,在这里我将使用正则表达式验证来停止插入非法字符。

回答:

参数化查询在运行SQL查询之前会对参数进行适当的替换。它完全消除了“脏”输入更改查询含义的可能性。也就是说,如果输入包含SQL,则该输入将不会成为执行内容的一部分,以防SQL从未注入到结果语句中。

以上是 参数化查询如何帮助防止SQL注入? 的全部内容, 来源链接: utcz.com/qa/407981.html

回到顶部