Рубрики
Uncategorized

Контрольный список безопасности веб -разработчика v1

Простой контрольный список для защиты веб -приложений в облаке с акцентом на AWS. Tagged Security, AWS, WebDev, DevOps.

Этот контрольный список был обновлен в Контрольный список веб -разработчика v2 .

Первоначально опубликовано по адресу: https://www.sensedeep.com/blog/posts/stories/web-developer-security-checklist.html

Разработка безопасных, надежных веб -приложений в облаке — это Сложный, очень тяжелый Анкет Если вы думаете, что это легко, вы либо более высокая форма жизни, либо у вас есть болезненное пробуждение впереди вас.

Если вы выпили MVP Cool-Aid и полагайте, что вы можете создать продукт за один месяц, который является и ценным, и безопасным-подумайте дважды, прежде чем запустить свой «прото-продукт».

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

Этот контрольный список прост и ни в коем случае не завершен. Я разрабатывал безопасные веб -приложения в течение более 14 лет, и этот список содержит некоторые из наиболее важных вопросов, которые я мучительно узнал за этот период. Я надеюсь, что вы серьезно рассмотрите их при создании веб -приложения.

Пожалуйста, прокомментируйте, если у вас есть товар, который я могу добавить в список.

База данных

[] Используйте шифрование для идентификационных пользователей данных и конфиденциальных данных, таких как токены доступа, адреса электронной почты или данные выставления счетов.

[] Если ваша база данных поддерживает недорогой шифрование в состоянии покоя (например, aws aurora ), тогда включите, чтобы получить данные на диске. Убедитесь, что все резервные копии также хранятся зашифрованы.

[] Используйте минимальную привилегию для учетной записи пользователя доступа к базе данных. Не используйте корневую учетную запись базы данных.

[] Храните и распространяйте секреты, используя магазин ключей, предназначенный для такой цели, как Хранилище или AWS Secret Manager Анкет Не в своих приложениях не заслуживают жестких секретов кода и никогда не проверяйте секреты в GitHub.

[] Полностью предотвратите инъекцию SQL, только с помощью SQL -подготовленных операторов. Например: при использовании NPM не используйте NPM-MYSQL, используйте NPM-MySQL2, который поддерживает подготовленные операторы.

Разработка

[] Убедитесь, что все компоненты вашего программного обеспечения будут отсканированы на предмет уязвимостей для каждой версии, выдвинутой для производства. Это означает O/S, библиотеки и пакеты. Это должно быть автоматизировано в CI-CD процесс.

[] Безопасные системы разработки с равной бдиной на то, что вы используете для производственных систем. Создайте программное обеспечение из защищенных изолированных систем разработки.

Аутентификация

[] Убедитесь, что все пароли хэшируются с использованием соответствующего крипто, таких как Bcrypt . Никогда не пишите свой собственный крипто и правильно инициализируйте крипто с хорошими случайными данными.

[] Реализуйте простые, но адекватные правила пароля, которые побуждают пользователей иметь долгие, случайные пароли.

[] Используйте многофакторную аутентификацию для ваших входа для всех ваших поставщиков услуг.

Отказ в защите обслуживания

[] Убедитесь, что атаки DOS на ваши API не будут нанести вред вашему сайту. Как минимум, имейте ограничители скорости на ваших более медленных путях API, такие как входные и генеральные процедуры.

[] Обеспечивание пределов здравомыслия по размеру и структуре предоставленных пользователя данных и запросов.

[] Используйте Распределенное отказ в обслуживании (DDOS) Смягчение с помощью глобальной прокси -сервисной службы кэширования, такого как Cloudflare Анкет Это можно включить, если вы страдаете от атаки DDOS и в противном случае функционируют как ваш поиск DNS.

Веб -трафик

[] Используйте TLS для всего сайта, а не только для входа в систему и ответы. Никогда не используйте TLS только для формы входа в систему.

[] Файлы cookie должны быть httponly и безопасны и быть охватываемыми путем и доменом.

[] Используйте CSP не допуская небезопасных бэкдоров. Это боль для настройки, но стоит.

[] Используйте x-frame-option, заголовки X-XSS-защиты в ответах клиентов

[] Используйте ответы HSTS для принудительного доступа TLS. Перенаправить весь HTTP -запрос на HTTPS на сервере в качестве резервного копирования.

[] Используйте токены CSRF во всех формах и используйте новый SameSite Cookie Заголовок ответа, который исправляет CSRF раз и для всех новых браузеров.

Апис

[] Убедитесь, что в ваших публичных API нет ресурсов.

[] Убедитесь, что пользователи полностью аутентифицируются и авторизованы надлежащим образом при использовании ваших API.

[] Используйте канарейские проверки в API, чтобы обнаружить незаконные или ненормальные запросы, которые указывают на атаки.

Проверка

[] Сделайте проверку ввода на стороне клиента для быстрого отзывов пользователей, но никогда не доверяйте ей.

[] Проверьте каждый последний бит пользовательского ввода, используя белые списки на сервере. Никогда не вводят пользовательский контент в ответы. Никогда не используйте пользовательский ввод в операторах SQL.

Облачная конфигурация

[] Убедитесь, что все услуги имеют минимальные порты. В то время как безопасность через безвестность не является защитой, использование нестандартных портов сделает их немного сложнее для злоумышленников.

[] База данных и сервисы хоста на частных VPC, которые не видны в какой -либо публичной сети. Будьте очень осторожны при настройке групп безопасности AWS и вставки VPC, которые могут непреднамеренно сделать услуги видимыми для общественности.

[] Изолируют логические услуги в отдельных VPC и одноранговых VPC для обеспечения межподобия.

[] Убедитесь, что все услуги принимают данные только из минимального набора IP -адресов.

[] Ограничьте исходящий IP и порт трафик, чтобы минимизировать приложения и «уведомление».

[] Всегда используйте пользователей и роли AWS IAM, а не корневые учетные данные. Инвестируйте в обучение, чтобы эффективно использовать IAM.

[] Используйте минимальную привилегию доступа для всех сотрудников OPS и разработчиков. Дайте IAM пользователям и ролям минимальные возможности, необходимые для выполнения задачи.

[] Регулярно поверните пароли и клавиши доступа в соответствии с расписанием.

Инфраструктура

[] Убедитесь, что вы можете сделать обновления без простоя. Убедитесь, что вы можете быстро обновить программное обеспечение полностью автоматизированным образом.

[] Создайте всю инфраструктуру, используя инструмент, такой как Terraform, а не через облачную консоль. Инфраструктура должна быть определена как «код» и быть в состоянии воссоздана на нажатию кнопки. Иметь нулевую толерантность к любому ресурсу, созданному в облаке вручную — Terraform может затем проверить вашу конфигурацию.

[] Используйте централизованный журнал для всех услуг. Вам никогда не нужно SSH для доступа или получения журналов.

[] Не входите в услуги, кроме разовой диагноза. Использование SSH регулярно, как правило, означает, что вы не автоматизировали важную задачу.

[] Не держите порт 22 открытым на любых сервисных группах AWS на постоянной основе.

[] Создать неизменные хосты Вместо долгоживущих серверов, которые вы исправляете и обновляете. (См. Необываемая инфраструктура может быть более безопасной )

[] Используйте Система обнаружения вторжений Чтобы минимизировать Apts Анкет

Операция

[] Выключение неиспользованных услуг и серверов. Самый безопасный сервер — это тот, который работает. Это может быть запланировано с помощью таких инструментов, как Powerdown Анкет

Тест

[] Проверяйте ваш дизайн и реализацию.

[] Протекайте проникновение — взломайте себя, но также попросите кого -то, кроме вы тестирование ручки.

Наконец, есть план

[] У вас есть модель угроз, которая описывает, от чего вы защищаете. Он должен перечислить и расставить приоритеты возможных угроз и актеров.

[] Имейте практический план инцидентов безопасности. Однажды вам это понадобится.

Узнайте больше о Powerdown

Чтобы узнать больше о облачной платформе Powerdown и о том, как она может снизить ваши облачные затраты, прочитайте Более низкие затраты с точечными экземплярами Анкет

Powerdown Предлагает бесплатную 30-дневную оценку, не требуя кредитной карты. Попробуйте сами и посмотрите сбережения, которую вы можете достичь всего за один месяц.

Оригинал: «https://dev.to/sensedeep/web-developer-security-checklist-1knh»