Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net中转义mysql?_Mysql_Sql_Asp.net_Security_Ado.net - Fatal编程技术网

如何在asp.net中转义mysql?

如何在asp.net中转义mysql?,mysql,sql,asp.net,security,ado.net,Mysql,Sql,Asp.net,Security,Ado.net,这个PHP代码的ASP.NET等价物是什么 $db=newmysqli(/*一些数据*/); $db->query('INSERT INTO`log`(`msg`)值('.$db->real_escape_字符串($\u POST['mesg']))”); 我只对mysqli\u real\u escape\u string感兴趣,但我能在Google上找到的ASP.NET和SQL的示例都是可注入的 所以我的问题是:如何使用ADO.NET将用户数据传递给ASP.NET中的SQL 如果您使用re

这个PHP代码的ASP.NET等价物是什么

$db=newmysqli(/*一些数据*/);
$db->query('INSERT INTO`log`(`msg`)值('.$db->real_escape_字符串($\u POST['mesg']))”);
我只对mysqli\u real\u escape\u string感兴趣,但我能在Google上找到的ASP.NET和SQL的示例都是可注入的

所以我的问题是:如何使用ADO.NET将用户数据传递给ASP.NET中的SQL


如果您使用regex的replace,请以代码为基础进行示例。

首先,如果可能,您应该使用属性。那么你就不需要自己逃出这些弦了

如果不能这样做,则需要避开反斜杠和撇号:

public static string EscapeForMySQL(string str) {
  return str.Replace("\\", "\\\\").Replace("'", "\\'")
}

首先,如果可能,您应该使用属性。那么你就不需要自己逃出这些弦了

如果不能这样做,则需要避开反斜杠和撇号:

public static string EscapeForMySQL(string str) {
  return str.Replace("\\", "\\\\").Replace("'", "\\'")
}

当使用这种方法时,您将需要研究在代码中使用

using (SqlConnection connection = new SqlConnection(connectionString))
{
  DataSet userDataset = new DataSet();

  SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT * FROM Log WHERE Message = @Message", connection);                

  myCommand.SelectCommand.Parameters.Add("@Message", SqlDbType.VarChar, 11);

  myCommand.SelectCommand.Parameters["@Message"].Value = messageString;

  myDataAdapter.Fill(userDataset);
}

当使用这种方法时,您将需要研究在代码中使用

using (SqlConnection connection = new SqlConnection(connectionString))
{
  DataSet userDataset = new DataSet();

  SqlDataAdapter myDataAdapter = new SqlDataAdapter("SELECT * FROM Log WHERE Message = @Message", connection);                

  myCommand.SelectCommand.Parameters.Add("@Message", SqlDbType.VarChar, 11);

  myCommand.SelectCommand.Parameters["@Message"].Value = messageString;

  myDataAdapter.Fill(userDataset);
}

如果可能,请重构以避免动态sql或使用参数化查询

对ODBC使用参数化查询(我相信oledbcommand在这里也可以使用)

请看我的演讲——这是第一个主题:


如果可能,请重构以避免动态sql或使用参数化查询

对ODBC使用参数化查询(我相信oledbcommand在这里也可以使用)

请看我的演讲——这是第一个主题:


@borrel:你是什么意思?在什么方面还不够好?这种方法有很多已知的攻击,有一种通用的方法(比如real_escape_string)应该使用,这就是为什么我包括了这个例子,换句话说,这是一个解决方案,但不是解决问题的方法go@borrel:通用方法是使用参数,正如我在回答中首先提到的。框架中没有任何方法可以为任何SQL方言转义字符串。eee它仍然不安全!!,例如,你可以用#和新线做什么-我特别要求安全性,但却给了我不安全的代码,这也会破坏多字节(unicode/utf)@borrel:你是什么意思?在什么方面还不够好?这种方法有很多已知的攻击,有一种通用的方法(比如real_escape_string)应该使用,这就是为什么我包括了这个例子,换句话说,这是一个解决方案,但不是解决问题的方法go@borrel:通用方法是使用参数,正如我在回答中首先提到的。框架中没有任何方法可以为任何SQL方言转义字符串。eee它仍然不安全!!,例如,你可以用#和新线做什么-1因为在我特别要求安全性的同时给了我不安全的代码,这也会破坏多字节(unicode/utf)+1。它是针对SQL Server的,但是MySQL连接器有相应的类。例如+1。它是针对SQL Server的,但是MySQL连接器有相应的类。