Proyek: Web Antrian – DevSecOps Implementation
Repository ini berisi implementasi pipeline DevSecOps yang mengintegrasikan SAST (Static Application Security Testing) menggunakan SonarQube dan DAST (Dynamic Application Security Testing) menggunakan OWASP ZAP. Pipeline dirancang untuk melakukan build, scanning otomatis, dan menghasilkan laporan keamanan setiap kali terjadi perubahan kode.
flowchart LR
A[Developer Commit Code] --> B[GitHub Actions CI]
B --> C[Build Docker Image]
C --> D[SAST Scan SonarQube]
C --> E[Deploy Temp Container]
E --> F[DAST Scan OWASP ZAP]
D --> G[Generate SAST Report]
F --> H[Generate ZAP Report]
G --> I[Quality Gate]
H --> I
I --> J[Review & Fix]
Diagram di atas menggambarkan alur otomatis pada pipeline CI: setiap commit memicu proses build, analisis kode, pengujian aplikasi secara dinamis, hingga pembuatan laporan keamanan.
SAST memeriksa kode sumber sebelum dijalankan. Tools yang digunakan:
- SonarQube Scanner
- SonarQube Quality Gate
Manfaat:
- Deteksi dini SQL Injection, XSS, Hardcoded Credentials, Code Smell
- Identifikasi potential bug dan security hotspot
DAST memeriksa aplikasi yang sedang berjalan menggunakan OWASP ZAP:
- Baseline scan terhadap endpoint utama aplikasi
- Deteksi XSS, CSP missing, CORS misconfig, Cookie flags weakness, Server header leaks
Pipeline dibangun menggunakan GitHub Actions dengan kemampuan:
- Build image otomatis
- Security scanning otomatis
- Upload laporan
- Quality gate evaluation
docker build -t antrian-app .
docker run -d --name antrian -p 8080:80 antrian-app
sonar-scanner \
-Dsonar.projectKey=antrian-app \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=YOUR_TOKEN
docker run --rm -u root --network host \
-v $(pwd):/zap/wrk:rw \
ghcr.io/zaproxy/zaproxy:stable \
zap-baseline.py -t "http://localhost:8080" -r zap_report.html
CVE Category: XSS Dampak: Browser tidak memiliki kontrol terhadap sumber script. Mitigasi:
Header always set Content-Security-Policy "default-src 'self'; script-src 'self';"
CVE Category: Information Exposure Dampak: Penyerang dapat mengetahui versi Apache. Mitigasi:
ServerSignature Off
ServerTokens Prod
Header unset Server
CVE Category: Session Hijacking Mitigasi (PHP):
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);
ini_set('session.cookie_samesite', 'Lax');Mitigasi:
header('Cache-Control: no-store, no-cache, must-revalidate');Pipeline ini mencakup:
- Setup Java
- SonarQube Scanner
- Quality Gate
- Docker Build & Run
- OWASP ZAP Baseline Scan
- Upload report
Semua temuan High tidak menghentikan proses (non-blocking) untuk kebutuhan testing.
.
├── auth/
│ ├── db.php
│ └── csrf-security/
├── ajax/
│ ├── updateNoAntrian.php
├── assets/
├── Dockerfile
├── sonar-project.properties
├── README.md
└── .github/
└── workflows/
└── ci-security.yml
Quality Gate digunakan sebagai penentu apakah kode layak dirilis berdasarkan:
- Bugs
- Vulnerabilities
- Code Smells
- Coverage
- Security Hotspots
Untuk lingkungan testing, quality gate dibuat non-blocking agar pipeline tetap berjalan.
Tambahkan pada Apache:
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "no-referrer"
Header always set Cross-Origin-Resource-Policy "same-origin"
Header always set Cross-Origin-Embedder-Policy "require-corp"
Repository ini menunjukkan implementasi pipeline DevSecOps modern menggunakan:
- GitHub Actions
- SonarQube untuk SAST
- OWASP ZAP untuk DAST
- Docker containerization
- Security headers hardening
Pipeline ini dapat dijadikan dasar untuk pengembangan aplikasi yang aman dan siap di-deploy.