Комментарии 8
Что бы этого всего не было надо соблюдать 4 очевидные вещи:
1) закрыть возможность обращаться к SQL серверу всем кроме айпи адреса с приложением. Очень часто они на одном находятся.
2) везде нормальные пароли.
3) изучить наконец SQL инъекции.
4) использовать для запроса пользователя с ограниченным числом прав (т.е. не надо давать ему доступ к другим базам, которые он не используют и прочие лишние полномочия)
1) закрыть возможность обращаться к SQL серверу всем кроме айпи адреса с приложением. Очень часто они на одном находятся.
2) везде нормальные пароли.
3) изучить наконец SQL инъекции.
4) использовать для запроса пользователя с ограниченным числом прав (т.е. не надо давать ему доступ к другим базам, которые он не используют и прочие лишние полномочия)
+5
Ещё добавил бы, что для MSSQL полезно вообще не давать доступа приложениям к данным напрямую, а вместо этого использовать хранимые процедуры с проверками.
0
Вредные советы все еще живы.
Часто еще советуют использовать вьюшки, это законно, но:
Пользуясь такого рода инкапсуцляцией стоит помнить, что резалт-сеты не имеют индексов, и, если вы в дальнейшем собираетесь манипулировать результатами выборок, то можно столкнуться с проблемной производительностью. А если все методы реализовывать в виде хранимух процедур, то это превращается в кошмар поддержки. Знаю не по наслышке.
Часто еще советуют использовать вьюшки, это законно, но:
Пользуясь такого рода инкапсуцляцией стоит помнить, что резалт-сеты не имеют индексов, и, если вы в дальнейшем собираетесь манипулировать результатами выборок, то можно столкнуться с проблемной производительностью. А если все методы реализовывать в виде хранимух процедур, то это превращается в кошмар поддержки. Знаю не по наслышке.
0
Резалт сеты на то и резалт, чтобы в них уже были готовые данные, и если не хватает вьюх, на которые индексы так же можно повесить, как раз и нужны процедуры. Давая приложению доступ к данным, особенно если это OLTP, получаем огромную дыру в безопасности. Не буду спорить что это несколько накладнее в поддержке, но я думаю оно того стоит ради безопасности данных.
+1
вьюхи и инлайн функции — это не резалт-сеты, они в запросах раскрываются и оптимизатор уже может воспользоваться индексами исходных таблиц. А вот с мультистейтмент-функциями так уже не получается
0
Cтатья ни о чём. Назвать надо было «проверяем, не забыли ли поменять пароль с дефолтного на нормальный» или «проверяем, не забыли ли проверить входящие данные».
+3
Переменная `$id` никак не фильтруется, значит, можно провести SQL-инъекцию, в которой любой запрос будет выполнен из-под админской учетки `sa`. Для того чтобы выполнять команды на уровне операционной системы, необходимо активировать хранимую процедуру `xp_cmdshell`, которая по умолчанию выключена. Нам потребуется отправить четыре запроса для ее активации:
Вон оно как просто оказывается. Нашел переменную и выполнил запросы, красота!
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Проверяем MS SQL на прочность. Векторы атак на MS SQL Server