Пишу эти основные советы для новичков, которые пишут свой первый сайт & готовый к запуску. Если что-то пропущено или неправильно, вы можете помочь мне исправить это, прокомментировав. давайте начнем.
- Получите SSL-сертификат:
Это протокол HTTPS, который по умолчанию шифрует данные вашего сайта, когда они передаются от клиента (браузера) к серверу. Вы можете получить его бесплатно
используя Cloudflare.
- Всегда используйте .env или конфигурационный файл, как минимум:
Не сохраняйте строку подключения к БД или любые ключи API в файле кодирования. Сохраняйте их в файле .env (что такое файл env? https://nodejs.dev/learn/how-to-read-environment-variables-from-nodejs).
Обратите внимание, убедитесь, что по ошибке вы не включите этот файл в git или bitbucket или любое другое репо.
Для более высокого уровня безопасности используйте менеджер секретных ключей-хранилищ, как это делают Azure и AWS. Это добавляет еще один дополнительный уровень безопасности.
Для более подробной информации вы можете обратиться к https://aws.amazon.com/secrets-manager.
- Включите ограничение белых списков IP или доменов для базы данных/API:
Ограничение базы данных действительно полезно и важно. Просто укажите IP-адрес, например, локальной машины, на которой вы ведете разработку, IP-адрес вашего сервера и т.д.
Если у вас нет статических IP, как у меня, то в этом случае на помощь приходит белая книга доменов, поэтому просто укажите домен вашего сайта, и ваша БД будет обслуживать только этот сервисный запрос.
Это также может применяться к API и изображениям.
Примечание: не забывайте об этом, когда вы вызываете API со стороны клиента.
- Проверьте разрешение на чтение/запись в папках:
В некоторых проектах мы можем решить загрузить файлы в папку. Поэтому будьте внимательны, устанавливая такие разрешения на папки.
- Шифрование данных:
Я знаю, что это обычное дело, но все же стоит упомянуть, что мы должны шифровать конфиденциальные данные пользователей и по возможности стараться избегать такой информации, пока она действительно не понадобится в вашем приложении. Например, если вы используете stripe’s connect для маркетплейса и вам нужен SSN или Tax Id бизнеса, то просто храните их на stripe, а не в DB.
И если вы делаете какие-либо приложения для фин- или хелт-тех, сначала прочитайте требования к управлению и хранению данных. Я знаю, что это скучно, но это ОБЯЗАТЕЛЬНО.
- Валидация на стороне сервера:
В начале своей разработки я думал, что валидация на стороне клиента — это все, что нам нужно. Но вы можете просто проверить элемент & валидация на стороне клиента вашего приложения — это бум. Пропало. 🙂
Поэтому добавьте валидацию на стороне сервера и в функциях загрузки файлов не забудьте установить валидацию размера файла.
- Отключите поддержку iframe:
Если вашему сайту не нужна эта функциональность, просто используйте «add_header X-Frame-Options «SAMEORIGIN»;» и объявление в заголовках сервера. Это не позволит вашему сайту отображаться в Iframe на других сайтах.
Поделитесь своим мнением в комментариях 🙂