微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C#中安全地创建mysql数据库

我有一个C#程序,我想动态创建数据库.虽然只有特权用户才会使用此应用程序,但我希望明智地遵循最佳实践.我该怎么做呢?我不认为我可以在这种情况下使用参数化查询,因为我不想传入字符串,我想传入一个标识符.

这是我现在作为占位符进入的不安全方式:

using (MysqLConnection connection = new MysqLConnection(connectionString))
        using (MysqLCommand command = connection.CreateCommand())
        {
            connection.open();
            command.CommandText = "DROP SCHEMA IF EXISTS " + schema;
            command.ExecuteNonQuery();
            command.CommandText = "CREATE SCHEMA " + schema;
            command.ExecuteNonQuery();
        }

有什么想法吗?

解决方法

您可以使用反引号分隔符来确保正确引用字符串,并确保将用户输入的内容用作文字标识符.

见:http://dev.mysql.com/doc/refman/5.0/en/identifiers.htmlUsing backticks around field names

这样,传递给服务器的命令看起来像:“DROP SCHEMA IF EXISTS foo”,它将容忍使用保留字和其他不正确的字符串值作为标识符.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐