
Проект OWASP NodeGoat предоставляет среду для изучения того, как риски безопасности из OWASP Top 10 применимы к веб-приложениям, разработанным с использованием Node.js, и как эффективно их устранять.
Будучи легковесным, быстрым и масштабируемым, 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
Поля <username> и <password> необходимо заполнить данными пользователя базы данных, добавленного ранее. Поле <dbname> задает имя
базы данных, которую nodegoat будет использовать в кластере (например "nodegoat"). Остальные поля уже будут заполнены правильными данными для вашего кластера.Заполните MongoDB начальными данными, необходимыми для приложения:
npm run db:seed
По умолчанию будет использоваться конфигурация "development", но при необходимости можно передать нужную конфигурацию в качестве аргумента.
Запустите сервер. Вы можете запустить сервер с помощью node или nodemon:
npm start
npm run dev
По умолчанию приложение будет размещено на порту 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.