Если пользователь конструирует запрос 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);