我有注册表单,我在这个表单中有用户名的文本框,当我测试网页表单时,我在文本框用户名(Kaz'em)中添加了这个用户,我有这个错误
('em'附近的语法不正确。 字符串''后面的未闭合引号。)
public bool RegisteredUser()
{
bool Return = false;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ElarabyGroup"].ConnectionString);
SqlCommand cmd = new SqlCommand("Select Count(UserName) From [Registeration] Where [Registeration].UserName = '" + RegisteredUserName + "'", con);
con.Open();
if (int.Parse(cmd.ExecuteScalar().ToString()) > 0)
Return = true;
con.Close();
return Return;
}
答案 0 :(得分:5)
那是因为您直接在SQL中包含用户提供的数据。
使用parameterized query代替,将文本框中的值设置为参数值之一。这样,您可以使查询的“数据”部分远离查询的“代码”部分。
你很幸运,这只是一个语法错误,而不是little Bobby tables ...
答案 1 :(得分:0)
您接触到SQL注入攻击,它可能会像任何事情一样受到伤害。
尝试Mr.Skeet建议的方法
答案 2 :(得分:0)
我会和Jon一起去,但你也可以尝试select * from [Table] where [ColumnName]= N'Kaz'em'
这意味着它也会寻找特殊字符。