У меня есть веб-приложение на 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 кэшируется по соображениям производительности, что позволяет это сделать, если вы знаете, что делаете)