当我们谈论在数据库中插入数据时,我已经学会了如何参数化我的文本框,现在我想在手动为SQL添加连接字符串时实现相同的技术数据库。我的代码是这样的:
connectionString = "server=localhost;uid=" + usr.Text + ";pwd=" + pwd.Text;
我认为它很容易被SQL注入攻击。有什么建议吗?
答案 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);
但它并不安全,行为也一样。