Что лучшие практики должны реализовать безопасность при использовании NHibernate?

См. также:

для Microsoft Visual C:

http://msdn.microsoft.com/en-us/library/2e70t5y1%28v=vs. 80% 29.aspx

и GCC утверждают совместимость с компилятором Microsoft .:

http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking -Pragmas.html

В дополнение к предыдущим ответам, обратите внимание, что независимо от упаковки в C ++ нет гарантий-распоряжений-членов. Компиляторы могут (и, конечно же, делать) добавлять в структуру элементов виртуальной таблицы и базовых структур. Даже существование виртуальной таблицы не обеспечивается стандартом (реализация виртуального механизма не указана), и поэтому можно сделать вывод, что такая гарантия просто невозможна.

Я вполне уверен, что порядок членов является гарантировано в C, но я не стал бы рассчитывать на это, когда писал кросс-платформенную или кросс-компиляторную программу.

9
задан Ray Vega 22 September 2008 в 19:52
поделиться

5 ответов

Защитите свои строки подключения.

С.NET 2.0 и NHibernate 1.2, это - простые в использовании строки зашифрованного соединения (и другие параметры настройки приложения) в Ваших файлах конфигурации. Сохраните свою строку подключения в <connectionStrings> блок, затем используйте NHibernate connection.connection_string_name свойство вместо connection.connection_string. При выполнении веб-сайта и не Приложения Windows можно использовать aspnet_regiis инструмент командной строки для шифрования <connectionStrings> блок, при отъезде остальной части настроек NHibernate в простом тексте для легкого редактирования.

Другая стратегия состоит в том, чтобы использовать Интегрированную Аутентификацию для Вашего соединения с базой данных, если Ваша поддержка платформ базы данных это. Тем путем Вы (надо надеяться), не храните учетные данные в простом тексте в Вашем файле конфигурации.

7
ответ дан 4 December 2019 в 10:34
поделиться

Используйте специализированную, вниз заблокированную учетную запись SQL

3
ответ дан 4 December 2019 в 10:34
поделиться

На самом деле NHibernate может быть уязвим для Внедрения SQL при использовании SQL или HQL для построения запросов. Удостоверьтесь, что Вы используете параметризированные запросы, если необходимо сделать это, иначе Вы собираетесь для мира боли.

6
ответ дан 4 December 2019 в 10:34
поделиться

Один из аргументов, которые я услышал в пользу sprocs по ORM, - то, что они не хотят, чтобы люди сделали независимо от того, что они хотят в базе данных. Они запрещают, выбирают/вставляют/обновляют/удаляют на самих таблицах. Каждым действием управляют через процедуру, которая рассматривается DBA. Я могу понять, куда эти взгляды прибывают из... особенно, когда у Вас есть набор любителей все с их руками в Вашей базе данных.

Но времена изменились, и NHibernate отличается. Это является невероятно сформировавшимся. В большинстве случаев это запишет лучший SQL, чем Ваш DBA :).

Все еще необходимо защитить себя от выполнения чего-то глупого. Как человек-паук говорит "с великой державой, прибывает большая ответственность"

Я думаю, что намного более уместно предоставить NHibernate надлежащий доступ к базе данных и действиям управления через другие средства, таким как вход аудита и регулярные резервные копии. Если кто-то должен был сделать что-то глупое, можно всегда восстанавливаться.

2
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

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