回答您的问题。
是的,您可以从任何 查询 获得sql注入攻击(即使您不使用平台使用提供的方法并通过sql调用来执行,也可以调用存储过程)。
我被要求提供一个示例,说明即使使用存储过程也可以进行注射。我看到开发的应用程序确实使用存储过程,但是这种方式是这样的:
// C# - DON'T DO THIS!
String regionName = assignedSomewhereElse();
sqlCommand sqlCmd = DatabaseConnection.CreateCommand();
sqlCommand sqlCmd.CommandText =
String.Format("EXECUTE sp_InsertNewRegion '{0}'", regionName);
sqlCmd.ExecuteNonQuery();
显然,这不是调用存储过程的方法。您应该使用平台的抽象或参数化查询。
sqlDataSource
是数据库的抽象层。它将为您创建SQL查询并自动清除它们,以防止注入。
为了避免注入,可以执行以下任一操作: