Omr*_*uva 2 c# sql asp.net oledb
public void RegisterUser(string passw,string uname ,string fname ,string lname, string email)
{
string strSql = @"INSERT INTO User (passw,uname,fname,lname,email) values ('" + passw + "','" + uname + "','" + fname + "','" + lname + "','" + email + "')";
cn.Open();
OleDbCommand cmd = new OleDbCommand(strSql,cn);
int yy= cmd.ExecuteNonQuery();
cn.Close();
cn.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我得到同样的错误 ,有人看到这里有什么不对吗?还是有另一种创造性的方法来解决这个问题,谢谢
您的代码可以根据用户输入动态更改.这就是导致错误的原因.
让我解释一下你的任何输入字段是否包含一个str-break的offtroph [']并且现在有一个未公开的引用.
它不仅会将您的代码暴露给SQL注入攻击.
所以我建议你使用参数传递值,因为参数被区别对待并且是安全的以及防止SQL注入.
public void RegisterUser(string passw,string uname ,string fname ,string lname, string email)
{
string strSql = @"INSERT INTO User (passw,uname,fname,lname,email) values (@passw,@uname,@fname,@lname,@email)";
cn.Open();
OleDbCommand cmd = new OleDbCommand(strSql,cn);
cmd.Parameters.AddWithValue("@passw",passw);
cmd.Parameters.AddWithValue("@uname",uname);
cmd.Parameters.AddWithValue("@fname",fname);
cmd.Parameters.AddWithValue("@lname",lname);
cmd.Parameters.AddWithValue("@email",email);
int yy= cmd.ExecuteNonQuery();
cn.Close();
cn.Dispose();
}
Run Code Online (Sandbox Code Playgroud)