SecAudit
Analyses the HTTP headers, SSL/TLS certificates, server configuration and public libraries of a website, and produces a report with a score, findings and recommendations. It only reads what the server exposes: no invasive tests.
Find out in a minute whether a website has an insecure configuration (headers, certificate, exposed versions) without doing anything invasive to it.
- Type
- Personal project
- Status
- Finished, updated in March 2026
- Areas
- Security, Backend, Frontend
- Technologies
- Python 3.12
- httpx
- Go
- Gin
- JWT
- SQLite
- React
- TailwindCSS
- Recharts
- WeasyPrint
- Docker Compose
- pytest
- GitHub Actions
Interactive demo
Screenshots
What it does
- Security headers: HSTS, CSP, X-Frame-Options, CORS and cookie flags
- SSL/TLS: weak protocols, insecure ciphers and expired or soon-to-expire certificates
- Configuration: dangerous HTTP methods, directory listing and version disclosure
- JS and CSS libraries with known CVEs, checked against OSV.dev
- Go API with JWT authentication, audit history and comparison between two scans
- PDF and HTML reports, and a sandbox with OWASP Juice Shop and DVWA to practise
What I learned
- What each header protects against and how to configure it properly
- Combining a Python scanner with a Go API
- Weighting modules to give an understandable overall score
- The legal and ethical limits of analysing other people's sites
The demo uses example sites with simulated responses and the scanner's own rules and penalties. The project also includes an experimental AI module that is simulated for now.
Technical decisions
- Passive analysis only
- It reads what the server already exposes in its responses. No fuzzing, no exploiting vulnerabilities.
- Scanner in Python and API in Go with Gin
- The Python scanner does the analysis. The Go API manages users with JWT and bcrypt, stores the history in SQLite and launches the scanner.
- Score weighted by module
- One overall score that is easy to understand, without hiding the detail of each module.
- Dependencies checked against OSV.dev
- Public vulnerability database for the JS and CSS libraries detected on the page.
- Sandbox with OWASP Juice Shop and DVWA
- Deliberately vulnerable apps to test the scanner locally, without touching other people's websites.
- Tests with pytest and go test in GitHub Actions
- Every commit runs the tests for both languages.
How it's built
Click each piece to see what it does.
Starts an audit, shows the history and compares two scans of the same site. Translated into Spanish, English and Basque.
Sign-up and login with JWT and bcrypt. Stores audits and findings in SQLite and serves the reports.
Four modules with httpx: headers, SSL/TLS, configuration and dependencies. Each one scores out of 100 and the overall score is a weighted average.
The versions of JS and CSS libraries detected on the page are looked up in the OSV.dev vulnerability database.
A Jinja2 template is rendered to HTML and to PDF with WeasyPrint, with findings, severity and steps to fix them.


