Насколько безопасен NHibernate в плане SQL/HQL-инъекций? Нужно ли пользователю производить какие-то действия для зачистки параметров запроса перед выполнением?
NHibernate и инъкции SQL (SQL Injection)
1
Спросил
Лучший ответ:
1
Если пользователь конструирует запрос HQL вручную, используя конкатенацию строк, то NHibernate полностью открыт для атак типа HQL-Injection. Вот так делать нельзя:
Query query = session.CreateQuery("from Product where name='" + userSuppliedName + "'");
В тоже время, если использовать механизм NHibernate передачи параметров в запрос или использовать критерии для построения запросов, то никакой опасности инъекций нет:
Query query = session.createQuery("from Product where Name=:productName");
query.SetParameter("productName", userSuppliedName);