一尘不染

使用SQL参数绑定是否意味着可以直接从输入中输入文本?

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;

每当您寻找与转义字符串等有关的内容时,似乎都建议这样做,最终的答案是让参数绑定来完成。但是,这样可以防止注入攻击等吗?还是您仍然需要执行一些服务器端验证?

来自高度注重PHP的背景,它与我身体的每根纤维都背道而驰,直接在查询中输入文本:p


阅读 159

收藏
2021-03-08

共1个答案

一尘不染

就SQL注入而言,您给出的示例是安全的。参数化查询的唯一潜在SQL注入问题是它们是否解决了本身使用动态SQL的proc。

当然,无论是否要进行参数化,您仍然必须考虑XSS漏洞。

2021-03-08