Пуленепробиваемый бэкенд на PostgreSQL

1 256
59.8
LoftBlog382 тыс
Опубликовано 22 июня 2016, 14:54
Доклад Дениса Милованова на тему "Пуленепробиваемый бэкенд на PostgreSQL".
В наше время, когда фреймворки "из коробки" защищают приложение от инъекций и межсайтовой подделки запросов, а также самостоятельно пишут SQL, очень легко почувствовать себя в комфорте и безопасности и потерять контроль над данными.

В типичном Web-приложении, запросы к объектам базы данных идут от имени одного и того же пользователя, который эти объекты и создавал. Наличие уязвимости в коде приложения в такой ситуации равнозначно краже и/или уничтожению всей информации. Разработчики с опытом иногда урезают права на выполнение особо "крутых" команд, например, DROP TABLE / DATABASE, или даже создают отдельных пользователей с правом читать или писать в конкретные таблицы.

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

В версии 9.5 PostgreSQL заявлена Row-Level Security Policy (RLS), но, пока светлое будущее не наступило, наша задача - сделать пуленепробиваемый "бэкенд" с использованием хранимых процедур.

Как правильно создавать пользователей базы данных?
Как перенести логику приложения в хранимые процедуры и выдать на них нужные права, чтобы надежно защитить данные?
Как тестировать и выкатывать правки в "бэкенд", сделанный подобным образом?

Смотрите интервью с IT-специалистами : youtube.com/playlist?list=PLY4...

Не ограничивай себя видеоуроками на YouTube!
Узнавайте еще больше полезной информации! Общайтесь с опытными разработчиками, преподавателями и развивайся через личное общение!

Telegram: telegram.me/loftblog
Slack: slack.loftblog.ru
Наш сайт: loftblog.ru
Instagram: instagram.com/loftblog
ВКонтакте: vk.com/loftblog
facebook: facebook.com/loftblog
twitter: twitter.com/loft_blog
-----------------------------------------------------------------------------------
Не забываем, что самый лучший способ сказать "спасибо" - нажать кнопку "нравится" и скинуть ссылку на урок друзьям. Ничто другое так сильно не мотивирует автора продолжать работу :)
жизньигрыфильмывесельеавтотехномузыкаспортедаденьгистройкаохотаогородзнанияздоровьекреативдетское