c#,Mysql数据比较问题
我正在使用mysql和asp.net将数据保存在数据库中。在使用server.HTMLEncode()后将数据保存到DB中时,数据是在删除\后保存的。这就是我保存数据的方式c#,Mysql数据比较问题,c#,asp.net,mysql,C#,Asp.net,Mysql,我正在使用mysql和asp.net将数据保存在数据库中。在使用server.HTMLEncode()后将数据保存到DB中时,数据是在删除\后保存的。这就是我保存数据的方式 INSERT INTO Users(ID,Name) Values(1,Server.HTMLEncode(User.Identity.Name)) 在本例中,如果名称为XXX\ABC,则将其另存为XXXABC。斜杠在以DB保存时被删除 下次当我阅读相同的内容时,我需要检查登录的用户是否是我保存数据的用户,以便我执行以下
INSERT INTO Users(ID,Name) Values(1,Server.HTMLEncode(User.Identity.Name))
在本例中,如果名称为XXX\ABC,则将其另存为XXXABC。斜杠在以DB保存时被删除
下次当我阅读相同的内容时,我需要检查登录的用户是否是我保存数据的用户,以便我执行以下操作
if ( existingRowEditor == Server.HtmlEncode(User.Identity.Name))
{
}
但问题是上面的条件总是错误的,因为我有以下值
existingRowEditor=“XXXABC”
和Server.HtmlEncode(User.Identity.Name)=XXX\\ABC
那么,我如何检查上述条件是否正确呢?HTML编码不适合对数据库中存储的数据进行编码 反斜杠消失的原因是您正在将SQL代码粘贴在一起,并对文本进行编码以在网页中显示,而不是将其转义为SQL查询中的文本。反斜杠在MySQL中用作转义字符,因此字符串中的任何斜杠都将转义下一个字符 最好使用参数化查询,而不是将数据连接到SQL查询中。如果不可能,则必须正确转义文本,使其在SQL代码中成为字符串文字,因此必须将每个反斜杠替换为双反斜杠,并在每个撇号前面加上反斜杠。如果您未能正确地转义它,您的应用程序将对SQL注入攻击敞开大门
HTML编码值应在网页中显示时完成,而不是在将其放入数据库之前完成。HTML编码不适合对数据库中存储的数据进行编码 反斜杠消失的原因是您正在将SQL代码粘贴在一起,并对文本进行编码以在网页中显示,而不是将其转义为SQL查询中的文本。反斜杠在MySQL中用作转义字符,因此字符串中的任何斜杠都将转义下一个字符 最好使用参数化查询,而不是将数据连接到SQL查询中。如果不可能,则必须正确转义文本,使其在SQL代码中成为字符串文字,因此必须将每个反斜杠替换为双反斜杠,并在每个撇号前面加上反斜杠。如果您未能正确地转义它,您的应用程序将对SQL注入攻击敞开大门
HTML编码值应在网页中显示时完成,而不是在将其放入数据库之前完成。您可以使用以下方法:
var sqlQueryString = "INSERT INTO Users(ID,Name) Values(@Id,@Name)";
var sqlCommand = new SqlCommand(sqlQueryString, sqlConnection);
sqlCommand.Parameters.Add(new SqlParameter("Id", 1);
sqlCommand.Parameters.Add(new SqlParameter("Name", User.Identity.Name);
sqlCommand.ExecuteNonQuery();
您可以使用以下选项:
var sqlQueryString = "INSERT INTO Users(ID,Name) Values(@Id,@Name)";
var sqlCommand = new SqlCommand(sqlQueryString, sqlConnection);
sqlCommand.Parameters.Add(new SqlParameter("Id", 1);
sqlCommand.Parameters.Add(new SqlParameter("Name", User.Identity.Name);
sqlCommand.ExecuteNonQuery();
为什么要对用户名进行HTML编码?即使我没有对用户名进行HTMLEncode,它仍然会在DB中保存XXXABC,即从名称中删除\\您为如何保存数据给出的“代码”非常奇怪-它是C#和SQL的混合体。请显示代码的实际外观。如果您没有使用参数化SQL,那么这很容易成为问题。为什么要对用户名进行HTML编码?即使我没有对用户名进行HTML编码,它仍然会将XXXABC保存在DB中,即从名称中删除\\您为如何保存数据给出的“代码”非常奇怪-它是C#和SQL的混合体。请显示代码的实际外观。如果您没有使用参数化SQL,那么这很容易成为问题。