如何使用另一个表的值创建表而不会导致SQL注入

时间:2012-08-31 14:04:18

标签: c# asp.net sql sql-server

enter image description here我在数据库中有一个包含Profile_NameProfile_Tip列的表。

我的应用程序中有一个文本框,我输入表名的文本。我想用这个名字在数据库中创建一个表。我想使用Profile_Name值作为新创建的表的列名而不会导致SQL注入。请帮助。我使用这些语言更新鲜。提前谢谢。

3 个答案:

答案 0 :(得分:1)

一种方法是从Profile_NameProfile_Tip获取您需要使用的数据,并在parameterized query中使用它们 - 这应该可以解决大多数可能的SQL注入情况。

但是,您描述的数据库/解决方案(根据用户输入创建表)听起来像是一个糟糕的设计。如果不了解更多有关要求的话,很难说,但想想一种实现它们的方法,而不必根据用户输入生成表格。

答案 1 :(得分:0)

使用SqlParameter! 例如,

SqlConnection connection;
        // initializes connection to your DB
        using (SqlCommand command = connection.CreateCommand())
        {
            command.CommandText = @"ALTER TABLE @TABLE_NAME ADD @COLUMN_NAME varchar(50)";
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.AddWithValue("@TABLE_NAME", tableName);
            command.Parameters.AddWithValue("@COLUMN_NAME", columnName);

            command.ExecuteNonQuery();
        }

希望你明白了。

答案 2 :(得分:0)

您可以动态创建

您可以使用EXEC sp_executesql

执行

示例:

DECLARE @string NVARCHAR(100) 
SELECT @string = ".."
EXEC sp_executesql @string