C# 如果我通过试错来决定DbConnection类,安全吗?

C# 如果我通过试错来决定DbConnection类,安全吗?,c#,database-connection,connection-string,C#,Database Connection,Connection String,假设我有一个连接字符串(实际上它是一个用户条目)。我想使用这个字符串创建一个适当的DbConnection类。它可以是SqlConnection,也可以是OleDbConnection或OracleConnection(将来可能是另一个) 如果我按照以下程序操作是否安全 对于每个可能的连接类,我将创建它,然后打开和关闭连接 如果它抛出异常,我将尝试下一个类 如果它没有抛出异常,那么就可以了 这将是不安全的,因为您让攻击者有可能一次粗暴地执行所有数据库连接。我觉得这是一个坏主意,尤其是因为您没有

假设我有一个连接字符串(实际上它是一个用户条目)。我想使用这个字符串创建一个适当的
DbConnection
类。它可以是SqlConnection,也可以是OleDbConnection或OracleConnection(将来可能是另一个)

如果我按照以下程序操作是否安全

对于每个可能的连接类,我将创建它,然后打开和关闭连接

  • 如果它抛出异常,我将尝试下一个类
  • 如果它没有抛出异常,那么就可以了

这将是不安全的,因为您让攻击者有可能一次粗暴地执行所有数据库连接。

我觉得这是一个坏主意,尤其是因为您没有指定预期其中一个连接失败的原因以及使用下一个连接的原因。如果它是有效的SQL连接字符串,但db根本无法访问,该怎么办?在那一点上尝试连接到Oracle db是毫无意义的

更好的方法是让他们选择提供者类型,然后给用户一个表单,表单中只允许他们更改连接字符串属性(通过适当的验证)