我有以下代码片段。sql注入问题
SqlCommand cmd = new SqlCommand("SELECT FName,LName FROM EMPLOYEE_TABLE WHERE EmployeeID = '" +TextBox1.Text + "' AND Password = '"+ TextBox2.Text +"'", con);
SqlDataReader x = cmd.ExecuteReader();
try
{
if (x.Read())
{
name = (string)x["FName"] +' '+ (string)x["LName"];
Session["NAME"] = name;
Session["ID"] = TextBox1.Text;
Response.Redirect("sample.aspx?action=On_Click");
}
else
{
errormsg.Text = "login failed.Please enter Valid UserID and Password";
errormsg.ForeColor = System.Drawing.Color.Red;
}
}
catch (Exception exp)
{
errormsg.Text = "Sorry,You dont have access to this portal.";
}
finally
{
x.Close();
con.Close();
}
现在,当我使用一个有效的ID(即存在)和密码作为ABC“或‘X’=”×然后将其登录到数据库中的第一个帐户表中的。直到这很好。
但是,当我尝试调试代码时,它会引发错误Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.
。
此外,如果它是抛出一个错误,那么为什么它登录到数据库的第一个帐户。注意:数据库的第一个帐户与我提供的用户ID不同。
注:我是这个应用程序的开发。所以我没有做任何违法的事情。 :)
第一个问题是,如果你是开发商,你是知道SQL注入的,你为什么不至少使用参数化查询? – Jaymz 2011-05-10 12:02:49
雅,很好的问题。多数民众赞成bcoz我刚才了解到SQL注入,所以我尝试在我自己的应用程序。然而我没有太多的想法回合参数化查询。 – scooby 2011-05-10 12:05:04
.net有一些建立在一些blatent sql注入问题的保护(微软正在做我认为你应该要做的事)。我猜你正在遇到这些。我记得当我第一次发现SQL注入时,我也遇到了它们。 – Chad 2011-05-10 13:41:57