MySql параметризованный запрос с шифрованием, приводящий к неправильному синтаксису

У меня есть таблица, в которой хранятся логин и пароль пользователей. Для тестов пароль сохраняется с экстремальным шифрованием.

Только для примера: пароль "один" зашифрован

! "[2hVFb>-@#+L4l _N[1\\ я =::3# Н.-R$19Z[DgOKKk/X;81= H +Bor%3s:VS)q0-B]QX+%AQ6o`Vom## г =[\\ од # ма *PT5\\) WU]{)J:I1JuZm$& RQrrL{TSon`\"DGN\" Fg [`%oSuohY4FVqPcmw%6EOU9bn\\ В-4j]>4aTh/LV,;{Sm9`M%/x4.?y+2K4?-$-g0$^9AUqh.3UBZfdv0hF:zya|L&-\\wZh`\\Y=T2o8KHv0o>I0?+/xtdiCLWp,Y$= а>& Rkj) п (+_-'МА ->;|`4jfZq$\\;%|=/{С $lFvI0c%1-ил> К &lWe8vBd% T +7%2QgU#s@O$Vh# л [МСС @/sJNBT\"hFf;,y\"NLstOLz_Q/{BMPq9UTfC^YH6(o*Z'(v83ncoUr{$23ZlJN*KMn2W+'$BX;koh?fG[G3KhA+f/qJa{#PsbrxmOT_E=O4`[.u\\ Tyo! ZEkAH^`/iLApkzI аз ^$MEW:-ihI>^v& bWvNR% на М '|W[|K(KVUyL`KcQwA064pLwOjIPK:S[O1o>k'-x_QQE|B[vo1pL,%6v>Eb,Gf|? * ZXM DVbkl;:Iii 4VO:KDPV@P7sPqy6xz>2>Uuh,\\8{bDe05tW)\\ AYH/:Ft/ аА & K |]1х \"6j#NzHk_peGEXpwh6Y/93TCW9*'']U,/TmhQpr>+aBnhNHkH,Lui@ Р \ "гС;SO$aQumF;?! 7kENi$UAM\\EYUa:](E6'W*`bYMFFM{(3$a0oIGt((v|'/"

Вот как я проверяю логин:

    internal static bool LoginValidation(string login, string password)
    {
        using (MySqlCommand sql = new MySqlCommand(" select count(*) from user where login = @login and password = @password ", myConnection))
        {
            sql.Parameters.AddWithValue("@login", login);
            sql.Parameters.AddWithValue("@password", password);
            sql.Connection.Open();
            return Convert.ToInt32(sql.ExecuteScalar()) > 0 ? true : false;
        }
    }

Где пароль - это строка, содержащая зашифрованную версию пароля пользователя. Приведенный выше код приводит к "неправильному синтаксису рядом с паролем". Конечно, параметр "пароль" не анализируется, как ожидалось. Когда я использовал MS SQL Server, приведенная выше команда работает без ошибок.

Что мне нужно сделать, чтобы безопасно выполнить этот запрос?

Я также пытался изменить строку

sql.Parameters.AddWithValue("@password", password);

в

sql.Parameters.Add("@password", MySqlDbType.VarChar).Value = password;

Но без разницы, что приводит к неправильному синтаксическому исключению.

0 ответов

Другие вопросы по тегам