
軽量で高速、かつスケーラブルな Node.js は、Web アプリケーションを開発するためのプラットフォームとして広く採用されるようになっています。このプロジェクトは、OWASP Top 10 のセキュリティリスクが Node.js で開発された Web アプリケーションにどのように適用されるか、そしてそれらに効果的に対処する方法を学ぶための環境を提供します。
Node.js Web アプリケーション向け OWASP Top 10:
このアプリケーションには、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 v8 以上が必要です
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 でホストされ、localhost:27017 の MongoDB インスタンスに接続します。これを変更するには、環境変数 PORT と MONGODB_URI を設定します。
その他の設定は、設定ファイル を更新することで変更できます。
このリポジトリには、アプリと DB インスタンスをセットアップして相互に接続するために必要な Dockerfile と docker-compose.yml が含まれています。
docker と docker compose をインストールします
GitHub リポジトリをクローンします:
git clone https://github.com/OWASP/NodeGoat.git
ディレクトリに移動します:
cd NodeGoat
イメージをビルドします:
docker-compose build
アプリを実行します。これにより、http://localhost:4000/ で NodeGoat アプリケーションが起動します:
docker-compose up
このオプションは、無料 ($0/month) の Heroku Node サーバーを使用します。
必須ではありませんが、このリポジトリをフォークして、フォークしたリポジトリをデプロイすることをお勧めします。これにより、フォークした独自バージョンで脆弱性を修正し、それを 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