This folder contains Docker-based practical labs for learning secure coding, vulnerable application behavior, authentication security, session handling, containerized web application deployment, and web security testing.
These labs are designed for students, cyber security learners, secure coding researchers, and web application security practitioners to understand both vulnerable and secure implementations inside isolated Docker environments.
- Python
- Flask
- PHP
- HTML5
- CSS3
- JavaScript
- Session Management
- Authentication Systems
- Secure Cookie Handling
- Access Control
- Input Validation
- Secure Coding Practices
- Docker
- Docker Compose
- Docker Networking
- Container Isolation
- Volume Management
- DVWA (Damn Vulnerable Web Application)
- Web Security Testing
- Vulnerability Analysis
- Secure vs Vulnerable Application Comparison
docker-practicals/
├── auth-system-web/
├── auth-secure-system-web/
├── auth-session-secure-system-web/
├── session-lab-web/
├── session-lab-vulnerable/
├── session-lab-secure/
└── dvwa/
| Folder | Purpose |
|---|---|
auth-system-web |
Basic authentication-based web application |
auth-secure-system-web |
Secure version of authentication system |
auth-session-secure-system-web |
Secure authentication with session protection |
session-lab-web |
Session management practical |
session-lab-vulnerable |
Vulnerable session handling implementation |
session-lab-secure |
Secure session handling implementation |
dvwa |
Damn Vulnerable Web Application security lab |
Before running these practicals, install:
- Docker
- Docker Compose
- Git
docker --version
docker compose version
git --versiongit clone git@github.com:code-with-nc/Secure_coding-practices.git
cd Secure_coding-practices/docker-practicalsgit clone https://github.com/code-with-nc/Secure_coding-practices.git
cd Secure_coding-practices/docker-practicalsThe execution process is almost the same for every practical.
Example:
cd auth-system-webdocker build -t auth-system-web .- Reads Dockerfile
- Creates Docker image
- Installs dependencies
- Packages the application
docker run -p 8080:80 auth-system-web- Starts container
- Maps:
- Local Port → 8080
- Container Port → 80
http://localhost:8080
cd docker-practicals/auth-system-web
docker build -t auth-system-web .
docker run -p 8080:80 auth-system-webOpen:
http://localhost:8080
cd docker-practicals/auth-secure-system-web
docker build -t auth-secure-system-web .
docker run -p 8081:80 auth-secure-system-webOpen:
http://localhost:8081
cd docker-practicals/auth-session-secure-system-web
docker build -t auth-session-secure-system-web .
docker run -p 8082:80 auth-session-secure-system-webOpen:
http://localhost:8082
cd docker-practicals/session-lab-vulnerable
docker build -t session-lab-vulnerable .
docker run -p 8083:80 session-lab-vulnerableOpen:
http://localhost:8083
cd docker-practicals/session-lab-secure
docker build -t session-lab-secure .
docker run -p 8084:80 session-lab-secureOpen:
http://localhost:8084
cd docker-practicals/dvwa
docker build -t dvwa-lab .
docker run -p 8085:80 dvwa-labOpen:
http://localhost:8085
Some folders may contain:
docker-compose.yml
docker compose up --builddocker compose up -ddocker compose downdocker psdocker ps -adocker stop <container_id>docker rm <container_id>docker imagesdocker rmi <image_name>docker logs <container_id>docker system pruneRun:
auth-system-web
auth-secure-system-web
auth-session-secure-system-web
Learn:
- Login implementation
- Password handling
- Secure authentication
- Authentication bypass risks
- Secure coding improvements
Run:
session-lab-vulnerable
session-lab-secure
Learn:
- Session fixation
- Cookie security
- Session hijacking risks
- Secure session handling
- Session timeout protection
Run:
dvwa
Practice:
- SQL Injection
- Cross-Site Scripting (XSS)
- CSRF
- File Upload Vulnerabilities
- Authentication Weaknesses
- Command Injection
After completing these Docker practicals, learners will be able to:
- Understand Docker-based application deployment
- Build and run containerized web applications
- Analyze secure and insecure authentication systems
- Understand session management vulnerabilities
- Compare vulnerable vs secure coding implementations
- Perform basic web application security testing
- Understand Docker networking and port mapping
- Use Docker containers for isolated cyber security labs
- Practice secure coding concepts in real-world scenarios
- Understand common OWASP-related vulnerabilities
If you get:
port is already allocated
Use another port:
docker run -p 8090:80 auth-system-webOpen:
http://localhost:8090
Use:
sudo docker build -t lab-name .
sudo docker run -p 8080:80 lab-nameOR add current user to Docker group:
sudo usermod -aG docker $USER
newgrp dockerCheck logs:
docker ps -a
docker logs <container_id>Rebuild image:
docker build --no-cache -t auth-system-web .These labs are created strictly for:
- educational purposes
- cyber security training
- secure coding practice
- authorized testing
Do NOT expose vulnerable containers on public networks or production systems.
Always run labs inside isolated local environments.
Narayani
GitHub: code-with-nc