Сайт проекта - защитапи.рф
Этот архив предназначен для мгновенного запуска веб‑приложения «GuardAPI» (Spring Boot) для проверки API на уязвимости, включая OWASP API Top 10. Внутри пакета есть исходники, скомпилированные классы, зависимости и готовый JAR.
- Исходный код:
src/иpom.xml - Конфиги:
src/main/resources/application.properties,logback-spring.xml, шаблоныtemplates/ - Скомпилированные классы:
target/classes - Зависимости (все сторонние библиотеки):
target/dependency/* - Фронт (UI):
api-checker
- Java 17+ установлен и доступен в PATH (
java -version) - Maven 3.9.11 установлен
- Node.js
- Распакуйте архив.
- Написать в консоли
mvn compileдля компиляции бекенда - Написать в консоли
mvn spring-boot:runдля запуска сервера бекенда - Перейти в папку
api-checker - Запустить
npm installдля установки зависимотей - Запустить
npm run devдля запуска фронтенда приложения
По умолчанию приложение слушает http://localhost:8080/. Порт можно изменить, задав переменную окружения SERVER_PORT, например:
- Откройте
http://localhost:5173/. - Укажите
baseUrlцелевого API и при необходимостиauthHeader - Нажмите «Автообнаружение эндпоинтов» и/или выберите атаки
- Кнопка «OWASP Top 10» автоматически подготовит набор проверок и запустит генерацию отчёта
- Войдите в свой аккаунт на защитапи.рф
- Перейдите в Настройки → API Keys
- Нажмите Create API Key
- Укажите название (например, "GitHub Actions")
- Скопируйте ключ - он больше не будет показан!
- Settings → Secrets and variables → Actions → New secret
- Name:
API_VULN_TESTER_KEY - Value:
avt_xxxxxxxxxx
- Settings → CI/CD → Variables → Add variable
- Key:
API_VULN_TESTER_KEY - Value:
avt_xxxxxxxxxx - ✅ Protect variable, ✅ Mask variable
name: Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: API Security Scan
run: |
curl -X POST https://защитапи.рф/api/scan \
-H "X-API-Key: ${{ secrets.API_VULN_TESTER_KEY }}" \
-H "Content-Type: application/json" \
-d '{
"baseUrl": "https://your-api.com",
"attackTypes": ["SQL_INJECTION", "XSS", "CSRF"]
}' | jq .security-scan:
stage: test
image: curlimages/curl:latest
script:
- |
curl -X POST https://защитапи.рф/api/scan \
-H "X-API-Key: $API_VULN_TESTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"baseUrl": "'"$CI_ENVIRONMENT_URL"'",
"attackTypes": ["SQL_INJECTION", "XSS", "CSRF"]
}' | jq .{
"baseUrl": "https://your-api.com",
"attackTypes": [
"SQL_INJECTION",
"XSS",
"CSRF",
"AUTH_BYPASS",
"RATE_LIMIT",
"CORS",
"XXE",
"SSRF"
],
"authHeader": "Bearer your-token",
"include": ["GET /api/users"],
"exclude": ["POST /api/admin/*"]
}- name: Check vulnerabilities
run: |
RESPONSE=$(curl -s -X POST https://защитапи.рф/api/scan \
-H "X-API-Key: ${{ secrets.API_VULN_TESTER_KEY }}" \
-H "Content-Type: application/json" \
-d '{"baseUrl": "https://your-api.com", "attackTypes": ["SQL_INJECTION", "XSS"]}')
HIGH_VULNS=$(echo "$RESPONSE" | jq '[.vulnerabilities[] | select(.severity == "HIGH")] | length')
if [ "$HIGH_VULNS" -gt 0 ]; then
echo "❌ Found $HIGH_VULNS HIGH severity vulnerabilities"
exit 1
fi- name: Download report
run: |
SCAN_ID=$(echo "$RESPONSE" | jq -r '.scanId')
curl -H "X-API-Key: ${{ secrets.API_VULN_TESTER_KEY }}" \
https://защитапи.рф/api/reports/$SCAN_ID/download/html \
-o report.html| Endpoint | Method | Description |
|---|---|---|
/api/scan |
POST | Запуск сканирования |
/api/reports |
GET | Список отчётов |
/api/reports/{id} |
GET | Получить отчёт |
/api/reports/{id}/download/html |
GET | Скачать HTML |
/api/reports/{id}/download/pdf |
GET | Скачать PDF |
Authentication: Header X-API-Key: avt_xxxxxxxxxx