
OWASP NodeGoat 프로젝트는 Node.js로 개발된 웹 애플리케이션에 OWASP Top 10 보안 위험이 어떻게 적용되는지, 그리고 이를 효과적으로 해결하는 방법을 배울 수 있는 환경을 제공합니다.
Node.js는 가볍고 빠르며 확장성이 뛰어나 웹 애플리케이션 개발에 널리 채택되고 있는 플랫폼입니다. 이 프로젝트는 Node.js로 개발된 웹 애플리케이션에 OWASP Top 10 보안 위험이 어떻게 적용되는지, 그리고 이를 효과적으로 해결하는 방법을 배울 수 있는 환경을 제공합니다.
Node.js 웹 애플리케이션을 위한 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 이상"으로 설정하세요. 그러면 다음 형식의 연결 문자열이 제공됩니다:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
<username> 및 필드는 앞서 추가한 데이터베이스 사용자의 세부 정보로 채워야 합니다. 필드는 nodegoat가 클러스터에서 사용할 데이터베이스 이름을 설정합니다(예: "nodegoat").
나머지 필드는 클러스터에 맞는 올바른 세부 정보로 이미 채워져 있습니다.기본적으로 애플리케이션은 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/월) Heroku Node 서버를 사용합니다.
필수는 아니지만, 이 저장소를 포크한 후 포크한 저장소를 배포하는 것이 좋습니다. 그러면 자신의 포크 버전에서 취약점을 수정한 뒤 Heroku에 배포하고 테스트할 수 있습니다.
공개적으로 접근 가능한 MongoDB 인스턴스를 설정합니다:
아래 버튼을 클릭하여 NodeGoat를 Heroku에 배포합니다:
Create New App 대화상자에서 MONGODB_URI 구성 변수를 MongoDB Atlas 클러스터의 연결 문자열로 설정합니다.
이 값은 클러스터의 연결 대화상자에서 확인할 수 있습니다.
"Connect your application"을 선택하고, 드라이버를 "Node.js"로, 버전을 "2.2.12 이상"으로 설정합니다.
그러면 다음 형식의 연결 문자열이 제공됩니다:
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.에 따라 라이선스가 부여됩니다.
<password><dbname>앱에 필요한 시드 데이터로 MongoDB를 채웁니다:
npm run db:seed
기본적으로 "development" 구성이 사용되지만, 필요한 경우 원하는 구성을 인자로 전달할 수 있습니다.
서버를 시작합니다. node 또는 nodemon을 사용하여 서버를 실행할 수 있습니다:
npm start
npm run dev