Как избежать SQL-инъекций с параметрами с помощью C #? - PullRequest
0 голосов
/ 02 апреля 2019

Я недавно изменил свой код, чтобы избежать инъекций SQL для maria db, и мне помогли с добавлением параметров, когда у меня при использовании страницы параметров метода возникла ошибка во время выполнения

strSQL = "SELECT * from user where uid = @uid AND start >= @StartDate AND end <= @EndDate ";
DataSet ds = QueryDataSet(strSQL, uid , StartDate, EndDate);


public DataSet QueryDataSet(string strSQL,string uid , string StartDate, string EndDate)
{
    try
    {
        MySqlDataAdapter da = new MySqlDataAdapter(strSQL, DBconn);
        da.SelectCommand.Parameters.AddWithValue("@uid", uid );
        da.SelectCommand.Parameters.AddWithValue("@StartDate", StartDate);
        da.SelectCommand.Parameters.AddWithValue("@EndDate", EndDate);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }
    catch (Exception ex)
    //catch
    {
        throw (new System.Exception(ex.Message));

    }
}

Я относительно новичок в использовании mariaдБ, поэтому любая помощь приветствуется

1 Ответ

0 голосов
/ 02 апреля 2019

Если вы хотите избежать SQL-инъекций, другой подход помимо «Параметризованных очередей» - это «Хранимые процедуры».

Вы можете прочитать это здесь => https://www.techonthenet.com/mariadb/procedures.php или вы можете исследовать самостоятельно.

Демонстрационный способ вызова хранимой процедуры в приложении ASP.NET:

using (MySqlConnection con = new MySqlConnection(constr))
    {
        using (MySqlCommand cmd = new MySqlCommand("Customers_GetCustomer", con))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@CustId", customerId);
            using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
            {
                DataTable dt = new DataTable();
                sda.Fill(dt);
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
    }

(Код взят из https://www.aspsnippets.com/Articles/Call-MySql-Stored-Procedure-with-Parameters-in-ASPNet-C-and-VBNet.aspx)

...