带加密的MySql参数化查询导致语法错误

时间:2013-09-17 01:15:19

标签: c# mysql sql syntax sql-parametrized-query

我有一个存储用户登录名和密码的表。对于测试,密码以极端加密方式保存。

仅举例:密码“one”加密为

"[2hVFb>-@#+L4l!_N[1\\i=::3#n.-R$19Z[DgOKKk/X;81=h+Bor%3s:VS)q0-B]QX+%AQ6o`Vom##z=[\\od#ma*PT5\\)wU]{)J:I1JuZm$&?RQrrL{TSon`\"dGN\"fG[`%oSuohY4FVqPcmw%6EOU9bn\\B-4j]>4aTh/LV,;{Sm9`M%/x4.?y+2K4?-$-g0$^9AUqh.3UBZfdv0hF:zya|L&-\\wZh`\\Y=T2o8KHv0o>I0?+/xtdiCLWp,Y$=a>&rkj)n(+_-'AI->;|`4jfZq$\\;%|=/{C$lFvI0c%1yl>To&lWe8vBd%t+7%2QgU#s@O$Vh#l[JpO@/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!az^$MEW:-ihI>^v&onM?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/aA&k|]1x\"6j#NzHk_peGEXpwh6Y/93TCW9*'']U,/TmhQpr>+aBnhNHkH,LUi@Pn\"?rC;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;
        }
    }

其中password是包含用户密码加密版本的字符串。上面的代码导致“密码附近的sintax不正确”。当然,“password”参数未按预期进行解析。当我使用MS SQL Server时,上面的命令没有错误。

安全执行此查询需要做些什么?

我也试过更改行

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

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

但没有区别,导致语法异常不正确。

0 个答案:

没有答案