CA2100:查看SQL查询以查找安全漏洞

时间:2017-11-04 18:47:23

标签: c# mysql

嘿,有人可以帮我这个代码吗? (视觉工作室给我一个警告ca2100,我不知道如何做到这一点,谷歌的解决方案我不会让他们工作xD)

谢谢

private void Updatebtn_Click(object sender, EventArgs e)
    {
        String selected = dgv.SelectedRows[0].Cells[0].Value.ToString();
        int id = Convert.ToInt32(selected);
        Update(id, Kundennametxt.Text, Gamecbb.Text, Bezahlungcbb.Text,Bezahltcbb.Text, Erledigtcbb.Text, PayPalEmailtxt.Text,ACCEmailtxt.Text, ACCPWtxt.Text);
    }

    private void Update(int id, string Kundenname, string Game, string Bezahlung, string Bezahlt, string Erledigt, string PayPalEmail, 
        string ACCEmail, string ACCPW)
    {
        string sql = "UPDATE kunden SET Kundenname='" + Kundenname + "',Game='" + Game + "',Bezahlung='" + Bezahlung + 
            "',Bezahlt='" + Bezahlt + "',Erledigt='" + Erledigt + "',PayPalEmail='" + PayPalEmail +
            "',ACCEmail='" + ACCEmail + "',ACCPW='" + ACCPW + "' WHERE ID=" + id + "";
        cmd = new MySqlCommand(sql, con);
        try
        {
            con.Open();
            adapter = new MySqlDataAdapter(cmd)
            {
                UpdateCommand = con.CreateCommand()
            };
            adapter.UpdateCommand.CommandText = sql;
            if (adapter.UpdateCommand.ExecuteNonQuery() > 0)
            {
                ClearTxts();
                MessageBox.Show("Successfully Updated");
            }
            con.Close();
            Retrieve();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            con.Close();
        }
    }

2 个答案:

答案 0 :(得分:0)

而不是像您当前那样直接在命令中插入值 试试这个

string sql= "UPDATE Kunden "+
" SET value1='?value1' WHERE ID=1";
try
{
  con.Open();
  cmd=new MySqlCommand(sql,con);
  cmd.Parameters.Add(new MySqlParameter("value1",value1.Text));
  //and for every parameter you need like Game,Bezahlt,Kundenname add a new
  //cmd.Paramaters.Add(new MySqlParameter("paramName",paramValue));
}
catch(MySqlException ex)
{
   MessageBox.Show(ex.Message);
}

答案 1 :(得分:0)

不要工作

private void Update(int id, string kundenname, string game, string bezahlung, string bezahlt, string erledigt,
        string payPalEmail,
        string accEmail, string accPw)
    {
        //SQL STMT
        /*var sql = "UPDATE kunden SET Kundenname='" + kundenname + "',Game='" + game + "',Bezahlung='" + bezahlung +
                  "',Bezahlt='" + bezahlt + "',Erledigt='" + erledigt + "',PayPalEmail='" + payPalEmail +
                  "',ACCEmail='" + accEmail + "',ACCPW='" + Encrypt(accPw) + "' WHERE ID=" + id + "";*/
        string sql = "UPDATE kunden " +
                     " SET Kundenname=@kundenname, Game=@game, Bezahlung=@bezahlung, Bezahlt=@bezahlt, Erledigt=@erledigt, PayPalEmail=paypalemail, ACCEmail=accenail, ACCPW=accpw WHERE ID="+ id + "";            //_cmd = new MySqlCommand(sql, _con);
        _cmd = new MySqlCommand(sql, _con);
        _cmd.Parameters.Add(new MySqlParameter("@kundenname",kundenname));
        _cmd.Parameters.Add(new MySqlParameter("@game",game));
        _cmd.Parameters.Add(new MySqlParameter("@bezahlung",bezahlung));
        _cmd.Parameters.Add(new MySqlParameter("@bezahlt",bezahlt));
        _cmd.Parameters.Add(new MySqlParameter("@erledigt",erledigt));
        _cmd.Parameters.Add(new MySqlParameter("@paypalemail",payPalEmail));
        _cmd.Parameters.Add(new MySqlParameter("@accemail",accEmail));
        _cmd.Parameters.Add(new MySqlParameter("@accpw",accPw));
        /*
        _cmd.Parameters.Add("@kundenname", MySqlDbType.VarChar).Value = kundenname;
        _cmd.Parameters.Add("@game", MySqlDbType.VarChar).Value = game;
        _cmd.Parameters.Add("@bezahlung", MySqlDbType.VarChar).Value = bezahlung;
        _cmd.Parameters.Add("@bezahlt", MySqlDbType.VarChar).Value = bezahlt;
        _cmd.Parameters.Add("@erledigt", MySqlDbType.VarChar).Value = kundenname;
        _cmd.Parameters.Add("@paypalemail", MySqlDbType.VarChar).Value = game;
        _cmd.Parameters.Add("@accemail", MySqlDbType.VarChar).Value = bezahlung;
        _cmd.Parameters.Add("@accpw", MySqlDbType.VarChar).Value = bezahlt;*/
        //OPEN CON,UPDATE,RETRIEVE DGVIEW
        try
        {
            _con.Open();
            _adapter = new MySqlDataAdapter(_cmd)
            {
                UpdateCommand = _con.CreateCommand()
            };
            _adapter.UpdateCommand.CommandText = sql;
            if (_adapter.UpdateCommand.ExecuteNonQuery() > 0)
            {
                ClearTxts();
                MessageBox.Show(@"Successfully Updated");
            }
            _con.Close();
            Retrieve();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            _con.Close();
        }
    }

Error