2010-07-01 33 views
3

正如标题所说,如果我使用SQL参数,即使用SQL参数绑定意味着文本是否可以直接从输入中输入?

SQLCommand cmd = new SQLCommand("select * from users where username = @user and password = @pass limit 1", Cxn); 

cmd.Parameters.Add("@user", SqlDbType.VarChar): 
cmd.Parameters.Add("@pass", SqlDbType.VarChar): 

我可以只输入参数值从输入直接进入?

cmd.Parameters["@user"].value = txtBxUserName.text; 
cmd.Parameters["@pass"].value = txtBxPassword.text; 

那就是似乎whenver你找什么关系转义字符串等被提出,最终答案是,只是让参数绑定做到这一点。但是这样可以防止注入攻击等?或者你还需要执行一些服务器端验证?

从很大程度上导向PHP后台它违背了我身体的每一个纤维直接输入文本查询产品:P

回答

7

您提供的示例在SQL注入方面是安全的。参数化查询唯一潜在的SQL注入问题是,如果它们处理的是使用动态SQL的proc。

当然,无论您是否参数化,您仍然需要考虑XSS漏洞利用。

1

是的,这是安全设备的方式使用.NET存储在数据库中的数据。 SQL参数提供了类型检查和验证。因为它们被视为文字值,而不是可执行代码,所以可以防止sql注入。

+0

使用参数化查询是** any **语言中最安全的方法。 – Bobby 2010-07-01 08:37:53

0

使用参数转义出所有特殊字符并防止注入攻击。这就是为什么参数是推荐的方法。

相关问题