Если я использую SubSonic для создания DAL для моего веб-проекта, мне нужно беспокоиться о предотвращении вторжений SQL Injection?Sql Injection Attacks and Subsonic
ответ
Это зависит от того, как вы строите свои запросы. Полностью можно писать небезопасные запросы с дозвуковыми, если вы не используете параметры.
// Bad example:
string sql = "delete from Products where ProductName = " + rawUserInput;
QueryCommand qry = new QueryCommand(sql, Product.Schema.Provider.Name);
DataService.ExecuteQuery(qry);
// Should be:
string sql = "delete from Products where ProductName = @TargetName";
QueryCommand qry = new QueryCommand(sql, Product.Schema.Provider.Name);
qry.AddParamter("@TargetName", rawUserInput, DbType.String);
DataService.ExecuteQuery(qry);
Нет, SubSonic использует параметры для передачи данных в базу данных, это позаботится об этом.
Короткий ответ: нет. Если вы используете классы Subsonic Generated или Subsonic.Select, чтобы сгенерировать ваши запросы/update/insert, вам не нужно беспокоиться о том, что SubSonic правильно использует параметры.
Павел указал, однако, что если вы избегаете писать небезопасный SQL, который позволит вам SubSonic. SubSonic не ваша мать, это не остановит вас, это больше похоже на вашего лучшего друга, это скажет вам не, но если вы решите сделать это, это ваше решение.
Просто повторно присутствует пример Павла (если FK ограничения)
string rawUserInput = "Queso Cabrales1";
#region BadExample
//string sql = "delete from Products where ProductName = " + rawUserInput;
////QueryCommand objQueryCommand = new QueryCommand(sql, Product.Schema.Provider.Name);
////DataService.ExecuteQuery(objQueryCommand);
#endregion BadExample
#region BetterExample
// Should be:
string sql = "update Products set ProductName = @ProductName where ProductName='Queso Cabrales'";
QueryCommand objQueryCommand = new QueryCommand(sql, Northwind.Product.Schema.Provider.Name);
objQueryCommand.AddParameter("@ProductName" , rawUserInput, DbType.String);
DataService.ExecuteQuery(objQueryCommand);
panGvHolder.Controls.Clear();
Query qry = Northwind.Product.CreateQuery();
qry.Columns.AddRange(Northwind.Product.Schema.Columns);
qry.WHERE("UnitPrice > 15").AND("UnitsInStock < 20 ");
//WHERE("UnitPrice > 15").AND("UnitsInStock < 30 ");
#endregion BetterExample
#region PresentResultsReplaceResponseWriteWithConsole.WriteLineForConsoleApp
using (IDataReader rdr = qry.ExecuteReader())
{
Response.Write("<table>");
while (rdr.Read())
{
Response.Write("<tr>");
for (int i = 0; i < rdr.FieldCount; i++)
{
Response.Write("<td>");
Response.Write(rdr[i].ToString() + " ");
Response.Write("<td>");
} //eof for
Response.Write("</br>");
Response.Write("</tr>");
}
Response.Write("<table>");
}
#endregion PresentResultsReplaceResponseWriteWithConsole.WriteLineForConsoleApp
} //eof method
- 1. Erlang и SQL Injection Attacks
- 2. SQL Injection and Codeigniter
- 3. Предотвращение вторжений в систему INJECTION ATTACKS на вашем iPhone?
- 4. SubSonic «Or» и «AND»
- 5. Контекст Injection and BeforeFeature
- 6. CDI Producer and Injection
- 7. Autowiring and Dependency Injection
- 8. SimpleRepository and Boolean с SubSonic
- 9. Ember Component and Dependency Injection
- 10. Mockery and Laravel constructor injection
- 11. DLL Injection and Access Violation
- 12. Будет ли ExecutionEngine.execute (String, Map <String, Object>) предотвращать «атаки NoSQL Injection Attacks»?
- 13. sql injection boolean syntax
- 14. Hibernate Named Query and Spring Data SQL injection
- 15. XSS Attacks Prevention
- 16. Ошибка SQL Injection
- 17. PHP с SQL Injection
- 18. Ошибка синтаксиса SQL (SQL injection)
- 19. mysql is_numeric sql injection
- 20. SQL Injection in Hibernate
- 21. SQL injection test - mysql_query
- 22. SQL Injection - что еще?
- 23. SQL Injection Основано на "" = ""
- 24. Экранирование символов, SQL Injection
- 25. Функция SQL Injection от '- +'
- 26. SubSonic эквивалента обновления SQL
- 27. Ошибка SubSonic SQL CE
- 28. SubSonic и SQL Azure
- 29. Subsonic 3 .Save() VS .Update() and .Add()
- 30. Sql Injection login bypass
Нет, мы не будем использовать прямой SQL, так что я могу предположить, что мы будем в безопасности с SubSonic! – TheVillageIdiot