首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql注入问题

sql注入问题
EN

Stack Overflow用户
提问于 2011-05-10 11:55:39
回答 2查看 249关注 0票数 2

我有下面的代码片段。

代码语言:javascript
复制
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‘=’x‘的,然后它登录到数据库中的表的第一个帐户,直到这是好的。

但是,当我尝试调试代码时,它会抛出一个错误Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.

另外,如果它抛出了一个错误,那么为什么它要登录到数据库的第一个帐户中。注意:数据库的第一个帐户有一个不同于我所提供的用户i。

注:我是这个应用程序的开发人员。所以我不会做任何违法的事。:)

EN

回答 2

Stack Overflow用户

发布于 2011-05-10 12:11:13

好的,根据您得到的主要问题提供一个答案(正如您已经说过的,您是SQL注入问题的新手)。

SQL注入是通过使用用户输入作为构造的一部分动态构建SQL查询引起的。在.Net中,最简单的解决方案是创建参数化查询。

我认为Jeff有一篇最完整、最简洁的文章,提供了一个解释和完整的示例这里

引用上述链接:

代码语言:javascript
复制
SqlConnection conn = new SqlConnection(_connectionString);
conn.Open();
string s = "SELECT email, passwd, login_id, full_name " + 
  "FROM members WHERE email = @email";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@email", email);
SqlDataReader reader = cmd.ExecuteReader();

当前的问题是:

它仍然登录到帐户的原因是因为查询仍然“有效”。

语句仍将被执行,相关记录仍将从数据库中返回,不会抛出任何异常。

当提供无效数据时,停止登录进程的唯一方法是在执行查询之前验证输入。您应该始终在将用户输入发送到数据库之前验证用户输入。如果用户提供:

代码语言:javascript
复制
username'; drop table users;--

作为用户名,您将陷入麻烦的中。

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 12:02:46

您遇到的错误是调试错误,而不是实际的程序异常。这就是为什么你正常运行它的原因。

为了纠正这个错误,我首先要确保所有东西都是用Debug构建运行的。另外,确保当前正在要检查的变量的函数中进行调试。尝试跳过断点(F10)几次以刷新上下文。对于这个特别的错误,互联网上还有很多其他的建议,所以如果你仍然有问题,你可能需要做一些谷歌搜索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5949612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档