如标题所示,如果我使用的是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;
每当您寻找与转义字符串等有关的内容时,似乎都建议这样做,最终的答案是让参数绑定来完成。但是,这样可以防止注入攻击等吗?还是您仍然需要执行一些服务器端验证?
来自高度注重PHP的背景,它与我身体的每根纤维都背道而驰,直接在查询中输入文本:p
就SQL注入而言,您给出的示例是安全的。参数化查询的唯一潜在SQL注入问题是它们是否解决了本身使用动态SQL的proc。
当然,无论是否要进行参数化,您仍然必须考虑XSS漏洞。