Внедрение SQL только с-ванильным NHibernate

Просто-ванильная установка NHibernate, например, никакой быстрый NHibernate, никакой HQL, ничто кроме объектов области и NHibernate отображающиеся файлы. Я загружаю объекты через:

_lightSabers = session.CreateCriteria(typeof(LightSaber)).List<LightSaber>();

Я применяю необработанный ввод данных пользователем непосредственно к одному свойству на классе "Светового меча":

myLightSaber.NameTag = "Raw malicious text from user";

Я затем сохраняю LightSaber:

session.SaveOrUpdate(myLightSaber);

Все, что я видел, говорит, что да, под этой ситуацией Вы неуязвимы для Внедрения SQL из-за способа, которым NHibernate параметризовал и выходит из запросов под капотом. Однако я - также относительный новичок NHibernate, таким образом, я хотел перепроверить.

Спасибо!

7
задан 25 March 2010 в 14:35
поделиться

3 ответа

Да, при использовании NHibernate вы почти неуязвимы для SQL-инъекций. Он использует параметризованные запросы для всех сгенерированных операторов SQL на всех платформах, которые их поддерживают.

Однако вы можете обойти это, используя пользовательский SQL для вставки / обновления или выполняя SQL с разновидностью execute_sql какого-либо типа, или SQL-запросы без параметров.

9
ответ дан 6 December 2019 в 15:20
поделиться

Вы в безопасности, пока не подключаете вводимые пользователем данные непосредственно в HQL или SQL: ничто другое (из функциональных возможностей, предоставляемых спящим режимом) не позволит пользователям внедрить вредоносный код.

3
ответ дан 6 December 2019 в 15:20
поделиться

Просто вторя другим, если вы позволите NHibernate генерировать ваш SQL, вы в безопасности, по крайней мере, теоретически.

Однако вам все равно нужно быть осторожным с хранимыми процедурами, триггерами и функциями в базе данных, особенно с динамическим SQL. Даже если клиент повсеместно использует параметризованные запросы, инъекции все равно возможны.

2
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: