当前位置:数据库 > SQLServer >>

string.Format 并不能防止SQL注入攻击才对

        private void StringFormat()
        {
            string userName = "jirigala";
            string password = "123456";
            string sqlQuery = string.Format("SELECT * FROM Base_User WHERE UserName={0} AND UserPassword={1}", userName, password);
            // 通过接口定义,打开一个数据库
            IDbHelper dbHelper = new SqlHelper();
            // 按指定的数据库连接串,打开数据库连接
            dbHelper.Open("Server=JIRIGALA-PC;Database=UserCenterV30;Uid=sa;Pwd=sa;");
            dbHelper.ExecuteNonQuery(sqlQuery);
            dbHelper.Close();
        }

收到一封博客园网友的回复后,我总觉得string.Format 并不能防止注入攻击啊, string.Format 并没有那么神奇的功能啊。

看原文的,从表面上,绝对是没防止SQL注入攻击,除非是底层又进行了处理,否则很明显是存在注入攻击的,源码如下:

代码
protected void btnLogin_Click(object sender, EventArgs e)
    {
        MAction action = new MAction(TableNames.Users);
        if(action.Fill(string.Format("UserName={0} and Password={1}", txtUserName.Text.Trim(), txtPassword.Text.Trim())))
        {
            Session["ID"] = action.Get<int>(Users.ID);
            action.Close();
            Response.Redirect("Default.aspx");
        }
        else
        {
            lbMsg.Text = "用户密码错误!";
            action.Close();
        }
    }

 

补充:Web开发 , ASP.Net ,
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,