
The OWASP NodeGoat project provides an environment to learn how OWASP Top 10 security risks apply to web applications developed using Node.js and how to effectively address them.
Будучи легковесным, быстрым и масштабируемым, Node.js становится широко используемой платформой для разработки веб-приложений. Этот проект предоставляет среду для изучения того, как риски безопасности OWASP Top 10 применяются к веб-приложениям, разработанным с использованием Node.js, и как эффективно их устранять.
OWASP Top 10 для веб-приложений на Node.js:
Это приложение включает страницу руководства, которая объясняет уязвимости OWASP Top 10 и способы их исправления.
Как только приложение запущено, вы можете получить доступ к странице руководства по адресу http://localhost:4000/tutorial (или порту, который вы настроили).
Уязвимое приложение Node.js для ниндзя, чтобы эксплуатировать, поджарить и исправить. Возможно, вы захотите создать свою собственную копию приложения, чтобы исправить и протестировать уязвимости. Подсказка: ищите комментарии в исходном коде.
База данных предварительно заполнена следующими учетными записями, созданными в рамках начальных данных:
admin p:Admin_123user1 p:User1_123), (u:user2 p:User2_123)Установите Node.js - NodeGoat требует Node версии 8 или выше.
Клонируйте репозиторий GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Перейдите в каталог:
cd NodeGoat
Установите пакеты node:
npm install
Настройте MongoDB. Вы можете установить MongoDB локально или создать удаленный экземпляр:
Использование локального MongoDB:
Использование удаленного экземпляра MongoDB:
MONGODB_URI в строку подключения вашего кластера, которую можно просмотреть в
диалоге подключения. Выберите "Connect your application",
установите драйвер "Node.js" и версию "2.2.12 or later". Это даст строку подключения вида:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
По умолчанию приложение будет размещено на порту 4000 и подключаться к экземпляру MongoDB по адресу localhost:27017. Чтобы изменить это, установите переменные окружения PORT и MONGODB_URI.
Другие настройки можно изменить, обновив файл конфигурации.
Репозиторий включает Dockerfile и docker-compose.yml, необходимые для настройки приложения и экземпляра базы данных, а затем их соединения.
Установите docker и docker compose
Клонируйте репозиторий GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Перейдите в каталог:
cd NodeGoat
Соберите образы:
docker-compose build
Запустите приложение, это запускает NodeGoat по адресу http://localhost:4000/:
docker-compose up
Этот вариант использует бесплатный ($0/месяц) сервер Node на Heroku.
Хотя это не обязательно, рекомендуется форкнуть этот репозиторий и развернуть форкнутую копию. Это позволит вам исправлять уязвимости в своей форкнутой версии, а затем развернуть и протестировать ее на Heroku.
Настройте публично доступный экземпляр MongoDB:
Разверните NodeGoat на Heroku, нажав кнопку ниже:
В диалоговом окне Create New App установите конфигурационную переменную MONGODB_URI в строку подключения вашего кластера MongoDB Atlas.
Ее можно просмотреть в диалоге подключения кластера.
Выберите "Connect your application", установите драйвер "Node.js" и версию "2.2.12 or later".
Это даст строку подключения вида:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
Поля <username> и <password> необходимо заполнить данными пользователя базы данных, добавленного ранее. Поле <dbname> задает имя
базы данных, которую nodegoat будет использовать в кластере (например "nodegoat"). Остальные поля уже будут заполнены правильными данными для вашего кластера.
Пожалуйста, следуйте руководству по внесению вклада
Этот проект регулируется Кодексом поведения.
Вот замечательные участники проекта NodeGoat.
Код лицензирован в соответствии с Apache License v2.0.
<username><password><dbname>Заполните MongoDB начальными данными, необходимыми для приложения:
npm run db:seed
По умолчанию будет использоваться конфигурация "development", но при необходимости можно передать нужную конфигурацию в качестве аргумента.
Запустите сервер. Вы можете запустить сервер с помощью node или nodemon:
npm start
npm run dev