Каковы лучшие практики для MS-SQL, когда аутентификации Windows не вариант? - PullRequest
4 голосов
/ 06 ноября 2008

Каков наилучший вариант для приложения Windows, которое использует проверку подлинности сервера SQL? Должен ли я создать одну учетную запись SQL и управлять пользователями внутри приложения (используя таблицу пользователей). Или я должен создать учетную запись сервера SQL для каждого пользователя. Какой у тебя опыт? Спасибо!

Ответы [ 3 ]

3 голосов
/ 06 ноября 2008

Зависит от того, будет ли имя пользователя / пароль для сервера SQL предоставляться пользователю, и будет ли это проблемой. Как правило, для внутренних приложений (в небольших организациях) можно доверять пользователям, не слишком входящим непосредственно в сервер sql. Если у вас есть слой промежуточного программного обеспечения (т.е. веб-сервисы), пароль может быть скрыт от пользователя.

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

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

Один из способов решения вашей проблемы - написать несколько веб-сервисов, которые проверяют безопасность и выполняют CRUD (через наборы данных и т. Д.), Но опять же, это зависит от приложения и среды.

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

0 голосов
/ 06 ноября 2008

Один из вариантов, который я использовал в прошлом, - это использование поставщика членства ASP.NET. Это делает аутентификацию легким в использовании. Единственный недостаток, который я увидел, это то, что он добавил кучу таблиц в вашу базу данных.

Код для его использования очень прост.

Вот сообщение в блоге об использовании этого в приложении Windows. http://msmvps.com/blogs/theproblemsolver/archive/2006/01/12/80905.aspx Вот еще одна статья с более подробной информацией. http://www.c -sharpcorner.com / UploadFile / jmcfet / Provider-basedASP.NET10162006104542AM / Provider-basedASP.NET.aspx

Вот еще одна статья, в которой говорится об использовании ее с приложениями Windows: http://www.theproblemsolver.nl/usingthemembershipproviderinwinforms.htm

Google для "Поставщик членства ASP.NET 2.0", и вы получите много хитов.

0 голосов
/ 06 ноября 2008

А как насчет учетных записей SQL, основанных на уровне разрешений, необходимых для этой задачи. Например, у вас может быть учетная запись только для чтения, используемая только для отчетов, если в вашей системе много отчетов. Вам также потребуется учетная запись, у которой есть права на запись, чтобы люди могли изменять свои пароли и выполнять другие задачи администратора пользователя.

Если у вас есть ситуации, когда определенные пользователи будут иметь доступ только к определенным данным, у меня будут отдельные учетные записи для этих данных. Проблема с использованием 1 учетной записи заключается в том, что вы говорите, что в вашем приложении нет SQL-инъекций. Это то, к чему все стремились бы, но иногда идеальная безопасность невозможна, отсюда и многосторонний подход.

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