如何参数化用户在C#中输入连接字符串的方式?

时间:2011-07-15 23:51:48

标签: c# mysql

当我们谈论在数据库中插入数据时,我已经学会了如何参数化我的文本框,现在我想在手动为SQL添加连接字符串时实现相同的技术数据库。我的代码是这样的:

connectionString = "server=localhost;uid=" + usr.Text + ";pwd=" + pwd.Text;

我认为它很容易被SQL注入攻击。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

它不容易受到SQL注入攻击,因为在这种情况下不使用SQL。您不能通过在连接字符串中指定任何内容来访问表和记录,也不能仅通过指定连接字符串来接收数据。

容易受到连接字符串属性注入的影响,正如Nikola在他的回答中提到的那样。另请参阅问题MS Access - prevent SQL injection in connection string

答案 1 :(得分:2)

根据您使用的提供程序,您可以使用.NET框架中提供的一个连接字符串构建器类。

http://msdn.microsoft.com/en-us/library/ms254947%28v=VS.100%29.aspx

没有关于任何连接字符串注入攻击的明确答案。我无法通过更改连接的属性来看到可以执行攻击的方式。但是,微软在上面发布的链接中提到了这种攻击,但没有详细说明这种攻击会发生什么。最好(或最差)攻击者可能会改变连接的某些属性,可能会增加超时并希望DDoS你的服务器那样。

答案 2 :(得分:0)

正如Mark所说,这里没有SQL注入漏洞。但为了便于阅读,我会选择:

connectionString = string.Format("server=localhost;uid={0};pwd={1}", usr.Text, pwd.Text);

但它并不安全,行为也一样。