Техническая база для менеджеров продукта — часть 6 — сеть, информационная безопасность и СI/CD
Записи из курса по technical product manager; позиционируют как: “Говори с разработчиками на одном языка”.
Это 6я часть из серии, в ней собраны: домены, хостинг и сеть, проблемы и решения по безопасности , CI/CD.
Сеть и информационная безопасность
Домен — имя сайта, который мы видим/используем в браузере. Состоит из протокола, доменного имени (n-уровней + доменная зона), путь данных. Доменное имя, это ссылка на IP адрес (связи лежат в DNS — сервис, который находит название по ip).
Сайт, это код, который находиться на сервере (комп). IP-адрес — это место регистрации данного ПК, в сети. Порт: 443 — https, 80 — http.
Виды серверов:
- физические — классический компьютер (железо), с подключением к сети;
- виртуальные (VTS, VDS) — как правило, один мощный компьютер, на котором есть десятки\сотни виртуальных прослоек (со своими ограничениями по памяти/процессору); могут быть разные ОС; множество систем (клиентов) на одной машине;
- облачные (AWS, Azure) — множество машин, которые объединены одной сетью (широкая шина данных, один ДЦ, охлаждение и тд), с cloud и application системами; множество клиентов на множестве машин;
Как выбрать хостинг?
Зависит от размера проекта и технологий: для лендинга/сайта подойдет готовое решение на обычном хостинге (физический сервер); для большого проекта — подойдет облачное решение (доступны бэкапи, много фичей по балансированию нагрузки, гибкая компоновка).
Критерии выбора хостинга: технологии продукта; цены (зависит от нужных объемов); железо (реальное, виртуальное, облако, уровень самого железа новое/б.у.); скорость сборки (время поднятие, кол-во гемора по установке ОС и тд); план по масштабированию (нужно или нет); фичи (нагрузка и балансировка); support.
Самые популярные проблемы с безопасностью:
-
DDoS-атаки: децентрализованная (с многих сетей) атака на систему.
Суть: злоумишленных, собирает сеть комьютеров — зомби (бот-нет, зараженные устройска), дает команду из центра управления и начинает много запросов к системе под атакой. В результате, система жертвы начинает тупить, висеть и тд.
Для чего: атака конкурентов в высокий сезон (е-комерс в черную пятницу), удар по репутации.
Защита: всякие protection приложения, которые фильтруют трафик (по протоколу, по доступу, по white label, алгоритмы), проксирует запросы (снижает скорость ответа, кэширует). -
“Слив” данных и доступов
Суть: как правило, данные неумышленно слывают сотрудники компании, а не дыры в безопасности; или выкладывают данные в облачные сервисы (гугл, гит-хаб, поиск по ключевым словам).
Защита: беседы с сотрудниками (не качать мусор, не вставлять флешки, аккарутно с письмами), антивирусы; не хранить в открытом виде пароли; не хранить пароли в браузере; разные пароли для разных сервисов; 2х факторная ауууф. -
SQL-инъекции
Суть: в sql есть системные команды; если сайт самописный и мы не проверяем данные, которые ввёл пользователь (логин, пас) и сразу идём с ними в БД, то можно получить доступ к управлению.
Пример: https://www.hacksplaining.com/exercises/sql-injection
Защита: экранировать (ограничивать) ввод кавычек в полях ввода данных; делать проверки на стороне клиента (не слать на бэк); использовать ОРМ. -
Phishing and pharming
phishing — использованые похожих страниц, для воровства данных (например письма от fakebook).
pharming — заражение ПК комьютером, который ждет момента перехода на нужный сайт, переадресет на другой домен и отпраляет левые запросы; вмешательство в локальный DNS файл.
Защита: проверять адрес страниц и сертификат безопсности; использовать https протокол; вводить адреса вручную; 2х факторная ауф. -
Устаревший протокол http://
Суть: использовать старый протокол передачи данных по сети, который не шифрует пакеты, передает их в открытом виде (у него нет SSL сертификата, с публичным и приватным ключем).
Защита: современные браузеры по-дефолту маркируют http протокол как небезопасный; интернет переходит на https. -
API-уязвимости
Суть: например, есть API, который отдает все данные пользователя; вместо того, чтобы написать новый метод, на ограничение данных, можно реализовать просто на уровне фильтров; тогда, через перебор, можно вытащить все данные о пользователях;
или доступ к API без авторизациию
Защита: использовать протоколи безопасности OWASP для API.
Пример: https://habr.com/ru/post/503284/ -
HTML- и JS-инъекции
Суть: ест страничка, где можно скачать картинку, но после оплаты; если реализовать доступ к ним криво (через html тег disabled), то поменяв теги или код в консоле разработчика, можно получить доступ к платному контенту;
Защита: проверять параметры пользователей на бэке.
Где нужна особенная безопасность?
Публичные проекты (доступ для всех), если хранятся пользовательские или платежные данные, есть платный контент и сервисы, репутационные риски.
Best practice в защите продуктов:
- Баги — могут быть дырами в безопасности: закрывать их асап; обновлять ПО;
- Снижать человеческий фактор по утечке данных;
- Использовать фреймворки и библиотеки (ORM): они безопаснее, чем самописные решения;
- API authentication;
- Использование industry standart продуктов (Amazon, CloudFront, etc.): в них по-дефолту есть готовые решения от многих проблем (Load-balancer, Автообновление feed-а раздачи, ddos защита).
CI/CD
Это система неприривной интеграции, разработки и доставки програмных продуктов. Связана с системой контроля версий (тут).
Как правило, применяется на сложных проектах, где нужна соблюдать четкий процесс запуска и есть возможность его автоматизировать.
Не нужен на лёгких приложениях (лендинг с одной стр, никаких зависимостей; один разработчик).
Инстурменты: Jenkins, TeamCity, Bamboo.