Какие меры безопасности SQL Server 05/08 могут быть приняты для предотвращения SQL-инъекций? - PullRequest
1 голос
/ 06 апреля 2011

У меня есть веб-приложение на Java.Я принял меры для предотвращения внедрения SQL на стороне кода, используя хранимые процедуры и регулярные выражения.Тем не менее, Java очень легко декомпилируется и может быть изменена, чтобы вводить команды SQL непосредственно в SQL Server, что делает мое использование хранимых процедур и регулярных выражений бесполезным.

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

EXEC master.dbo.sp_executesql N'Exec sp_configure ''show advanced option'', ''1'''
EXEC master.dbo.sp_executesql N'RECONFIGURE'
EXEC master.dbo.sp_executesql N'Exec sp_configure ''xp_cmdshell'', ''1'''
EXEC master.dbo.sp_executesql N'RECONFIGURE'

Я думаю, что то, что у меня есть, предотвратит инъекцию большинства сценаристов и хакеров, но я все еще волнуюсь за умных хакеровдостаточно, чтобы декомпилировать код и соответственно изменить его.(К сожалению, приложение Java кэшируется по соображениям производительности, что позволяет это сделать, если вы знаете, что делаете)

Ответы [ 2 ]

0 голосов
/ 16 июня 2011

eek - вы действительно не хотите, чтобы апплет или веб-приложение запускались напрямую с вашего сервера БД!

Если это действительно требование, первое, что вы должны сделать, это убедиться, что соединение с базой данных зашифровано (в противном случае ваш пользователь, когда запускает ваше приложение в интернет-кафе, транслирует учетные данные повсеместно ): http://technet.microsoft.com/en-us/library/ms189067.aspx

Вместо того, чтобы начинать со «всего» (пользователь-администратор) и ограничивать вещи, вы захотите работать наоборот: определите, к чему действительно нужен доступ пользователю, и предоставьте ему доступ только к этому. Для простого доступа к данным это может быть так же просто, как сделать пользователя частью групп db_datareader и db_datawriter, или настолько сложным, как явное предоставление соответствующего разрешения каждому объекту, в котором нуждается пользователь (или, надеюсь, роль). доступ к.

0 голосов
/ 15 июня 2011

http://msdn.microsoft.com/en-us/library/ms188787.aspx

"Чтобы выполнить sp_configure с обоими параметрами, чтобы изменить параметр конфигурации или выполнить инструкцию RECONFIGURE, необходимо предоставить разрешение уровня сервера ALTER SETTINGS. Разрешение ALTER SETTINGS неявно поддерживается фиксированными ролями сервера sysadmin и serveradmin. «

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

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