小编典典

插入具有SQL注入安全参数的数据库吗?

sql

我一直在阅读一些有关SQL注入的信息,我想确保我的代码可以说“安全”,我打算使用RegExp验证程序来检查用户输入,但是这里的另一篇文章建议仅使用参数化查询,我正在使用它们,但我想确保我的代码是安全的,对吗?

        using ( SqlConnection dataConnection = new SqlConnection(myConnectionString) )
        {
            using ( SqlCommand dataCommand = dataConnection.CreateCommand() )
            {
                dataCommand.CommandText = "INSERT INTO Lines (Name, CreationTime) " +
                    "VALUES (@LineName, @CurrentDateTime)";

                dataCommand.Parameters.AddWithValue("@LineName", TextBox2.Text);
                dataCommand.Parameters.AddWithValue("@CurrentDateTime", DateTime.Now.ToString());
                dataConnection.Open();
                //do other DB stuff

我将最后一部分剪短,使文章更短,其余的只是尝试并捕获异常并关闭数据库连接,以及提供有关插入成功的用户反馈。


阅读 211

收藏
2021-04-17

共1个答案

小编典典

您的代码很好,可以防止注入,因为值是作为参数而不是字符串文字传递的。但是,如果您自己编写此类数据访问,是否考虑过创建SqlParameter对象并显式设置类型,大小等并将参数添加到命令中?AddWithValue可以正常工作,但是SQL
Server将不得不确定类型,这需要一点点但不必要的开销。

2021-04-17