mahfuz-env/NirvishaAI
GitHub: mahfuz-env/NirvishaAI
一款使用 AI 以孟加拉语解释 Web 漏洞的安全扫描器后端,为孟加拉语开发者提供自动化的域名安全检测与报告生成服务。
Stars: 0 | Forks: 0
# NirvishaAI — 后端
NirvishaAI 会扫描您验证过的域名以查找安全漏洞,使用 AI 用孟加拉语解释每个问题,并生成可下载的 PDF/Markdown 报告。
## 功能
- **并行扫描** — 通过 goroutines 并发运行 5 项安全检查
- **SSL/TLS 检查** — 证书有效性、过期时间、HTTPS 重定向
- **Security headers** — CSP、HSTS、X-Frame-Options、Referrer-Policy、X-Content-Type-Options
- **Cookie security** — HttpOnly、Secure、SameSite 标志检测
- **CORS misconfiguration** — 通配符与 origin 反射检测
- **Open redirect** — 测试 9 个常见的重定向参数
- **AI 分析** — 通过 OpenRouter 提供孟加拉语解释(4 个备用模型)
- **域名验证** — 通过 DNS TXT 记录或基于文件的所有权证明
- **Rate limiting** — 通过 Redis 限制每个 IP 每天 5 次扫描
- **PDF + Markdown 报告** — 可下载的扫描报告
- **实时进度** — Server-Sent Events (SSE) 流
## 技术栈
| 层级 | 技术 |
|---|---|
| 语言 | Go 1.22+ |
| 路由 | chi v5 |
| 缓存 | Redis(基于 TTL,无永久存储) |
| AI | OpenRouter API |
| PDF | gofpdf(纯 Go) |
## 项目结构
```
backend/
├── main.go # Server entry point, routing
├── config/
│ └── config.go # Env loading
├── store/
│ └── redis.go # Redis client, key schema, TTL helpers
├── handlers/
│ ├── verify.go # Domain verification (DNS + file)
│ ├── scan.go # Scan start, SSE progress, rate limiting
│ ├── report.go # PDF + Markdown download
│ └── helpers.go # JSON response helpers
├── scanner/
│ ├── types.go # Shared types, score calculator
│ ├── runner.go # Parallel goroutine orchestrator
│ ├── ssl.go # SSL/TLS + HTTPS redirect
│ ├── headers.go # Security headers
│ ├── cookies.go # Cookie flags
│ ├── cors.go # CORS misconfiguration
│ └── redirect.go # Open redirect
├── ai/
│ └── openrouter.go # OpenRouter client, fallback chain, Bengali prompt
└── report/
├── pdf.go # PDF generation
└── markdown.go # Markdown generation
```
## API Endpoint
```
POST /api/verify/dns — Start DNS TXT verification
POST /api/verify/file — Check file-based verification
GET /api/verify/status — Get verification status (?domain=example.com)
POST /api/scan/start — Start a scan (verified domain required)
GET /api/scan/status/:id — Real-time SSE stream
GET /api/scan/result/:id — Full scan result JSON
POST /api/report/pdf/:id — Download PDF report
POST /api/report/md/:id — Download Markdown report
GET /health — Health check
```
## 快速开始
### 前置条件
- Go 1.22+
- Redis
### 安装与运行
```
git clone https://github.com/your-repo/nirvishaai-backend.git
cd nirvishaai-backend
cp .env.example .env
# 填写你的 OPENROUTER_API_KEY
go mod download
go run main.go
```
服务启动于 `http://localhost:8080`
### 环境变量
```
OPENROUTER_API_KEY= # Required — get from openrouter.ai
OPENROUTER_MODEL=google/gemini-flash-1.5
OPENROUTER_FALLBACK_MODEL_1=openai/gpt-4o-mini
OPENROUTER_FALLBACK_MODEL_2=anthropic/claude-3-haiku
OPENROUTER_FALLBACK_MODEL_3=meta-llama/llama-3.1-8b-instruct:free
OPENROUTER_FALLBACK_MODEL_4=mistralai/mistral-7b-instruct:free
REDIS_URL=redis://localhost:6379
PORT=8080
ALLOWED_ORIGINS=http://localhost:3000
SCAN_TIMEOUT=30
MAX_CONCURRENT_SCANS=10
```
## Redis Key Schema
所有数据均为临时数据——无永久存储。
```
scan:{id} → scan result JSON TTL: 6 hours
scan:progress:{id} → scan status string TTL: 6 hours
verify:{domain} → verification record TTL: 24 hours
ratelimit:{ip} → request count TTL: 24 hours
```
## 安全与法律声明
- 在进行任何扫描之前,**必须验证**域名所有权
- 仅执行**被动的、非侵入性的** HTTP 检查——不进行 payload 注入
- 扫描结果**不会永久存储**
- 限制为每个 IP 每天最多 **5 次扫描**
## 许可证
MIT — 查看 [LICENSE](LICENSE)
标签:AI安全分析, CORS检测, Go语言, SSL/TLS检测, Web安全扫描器, 安全报告生成, 插件系统, 搜索引擎查询, 程序破解