Являются ли хранимые процедуры более безопасными, чем использование LINQ для базы данных? - PullRequest
2 голосов
/ 26 мая 2011

Я не эксперт по безопасности, и в моем проекте обсуждалась необходимость использования Entity Framework. Несмотря на то, что нам кажется, что мы будем использовать его, руководитель проекта настаивает на том, что мы все равно должны выполнять все наши операции (включая простые CRUD) с процедурами хранилища из-за безопасности. Он говорит, что если мы используем хранимые процедуры, пользователям потребуется только разрешение на выполнение хранимой процедуры, а не разрешения на создание / чтение / обновление / удаление.

Как я уже говорил, я не эксперт по безопасности, поэтому мне было любопытно узнать, насколько это правда.

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Это дает права и привилегии отдельным процедурам хранилища, которые затем получают доступ к таблицам, а не к самим таблицам.

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

Это дает более тонкую гранулярность общей структуры безопасности с точки зрения ролей и привилегий.

Например, используя обычные права доступа к БД, легко ограничить, какие таблицы может видеть пользователь, но не какие строки они могут видеть в таблице.

Два способа исправить это - ограничить доступ к базовой таблице, а затем создать ограниченное представление для этой таблицы и предоставить разрешение на нее, или вы можете ограничить доступ через SP, который имеет логику, способную ограничивать строки пользователя можно увидеть.

1 голос
/ 27 мая 2011

Это правда.

Хранимые процедуры дают возможность обеспечить лучшую безопасность, чем стандартное разрешение таблицы (например, предоставляя возможность обновлять только несколько столбцов таблицы)

Но ..

Для разработчиков это кошмар. Даже самый простой запрос должен быть реализован как хранимый процесс или представление. Так что это не проворный, быстрый или сексуальный :) 1007 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...