使用ASP.net保存用户代理时避免SQL注入

使用ASP.net保存用户代理时避免SQL注入,asp.net,sql-injection,Asp.net,Sql Injection,我正在保存我的用户的浏览器用户代理以用于统计 正如您已经知道的,可以修改用户代理。我想知道我是否应该采取措施防止SQL注入 我正在使用存储过程来插入 非常感谢。使用事先准备好的声明。确保对所有SQL操作使用准备好的语句,即使数据来自数据库。或 以下是MSDN中的示例: SqlDataAdapter dataAdapter = new SqlDataAdapter( "SELECT CustomerID INTO #Temp1 FROM Customers " +

我正在保存我的用户的浏览器用户代理以用于统计

正如您已经知道的,可以修改用户代理。我想知道我是否应该采取措施防止SQL注入

我正在使用存储过程来插入


非常感谢。

使用事先准备好的声明。确保对所有SQL操作使用准备好的语句,即使数据来自数据库。

以下是MSDN中的示例:

  SqlDataAdapter dataAdapter = new SqlDataAdapter(
       "SELECT CustomerID INTO #Temp1 FROM Customers " +
       "WHERE CustomerID > @custIDParm; SELECT CompanyName FROM Customers " +
       "WHERE Country = @countryParm and CustomerID IN " +
       "(SELECT CustomerID FROM #Temp1);",
       connection);
  SqlParameter custIDParm = dataAdapter.SelectCommand.Parameters.Add(
                                          "@custIDParm", SqlDbType.NChar, 5);
  custIDParm.Value = customerID.Text;

  SqlParameter countryParm = dataAdapter.SelectCommand.Parameters.Add(
                                      "@countryParm", SqlDbType.NVarChar, 15);
  countryParm.Value = country.Text;

  connection.Open();
  DataSet dataSet = new DataSet();
  dataAdapter.Fill(dataSet);

谢谢你,我忘了告诉你我已经在使用带参数的SP。如果你按照第一个链接中的模式操作,那么你应该是安全的。将参数构建到查询中的参数汇编代码应正确编码输入,以防止SQL注入。(这是更好的解决方案。)谢谢,唯一的问题是,我使用的用户代理的最大长度为512字节。您认为这可能是个问题吗?只需确保数据库架构允许您期望的长度,并检查以确保给定的输入不超过架构允许的长度。谢谢。你说预处理语句是什么意思?我想他和参数化查询的意思是一样的。