- Flask web application for DIT analysis - Database models for upload history, analysis results, action cards - LLM service integration with Ollama API - Dashboard, upload, and history pages - RESTful API endpoints for analysis operations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
DIT 智能分析系統 - 資安檢視報告
版本: v1.0 日期: 2024-12-12 狀態: 已審視
1. 安全措施總覽
| 項目 | 狀態 | 說明 |
|---|---|---|
| SQL Injection | ✅ 已防護 | 使用 SQLAlchemy ORM |
| XSS | ✅ 已防護 | Jinja2 自動轉義 |
| CSRF | ⚠️ 待加強 | 建議加入 Flask-WTF |
| 檔案上傳驗證 | ✅ 已防護 | 限制 CSV 格式 |
| 敏感資訊 | ✅ 已防護 | .env 不進版控 |
2. 詳細檢視
2.1 SQL Injection 防護
- 風險等級: 低
- 防護措施:
- 使用 SQLAlchemy ORM,所有查詢自動參數化
- 無直接 SQL 字串拼接
# 安全寫法 (已實作)
DITUploadHistory.query.filter_by(id=upload_id).first()
# 危險寫法 (未使用)
# db.execute(f"SELECT * FROM uploads WHERE id = {upload_id}")
2.2 XSS 防護
- 風險等級: 低
- 防護措施:
- Jinja2 模板引擎自動 HTML 轉義
- 使用者輸入不直接渲染 raw HTML
2.3 檔案上傳安全
- 風險等級: 中
- 防護措施:
- 使用
werkzeug.utils.secure_filename()清理檔名 - 限制副檔名為
.csv - 上傳檔案分析後立即刪除
- 使用
# 已實作
filename = secure_filename(file.filename)
if not allowed_file(file.filename):
return jsonify({"error": "僅支援 CSV 檔案"})
2.4 敏感資訊管理
- 風險等級: 低
- 防護措施:
- 資料庫密碼、API Key 存放於
.env .env已加入.gitignore- 提供
.env.example範本
- 資料庫密碼、API Key 存放於
2.5 API 安全
- 風險等級: 中
- 待加強:
- 目前無 API 認證機制
- 建議後續加入 JWT 或 API Key 驗證
3. 建議事項
高優先
-
加入 CSRF 保護
from flask_wtf.csrf import CSRFProtect csrf = CSRFProtect(app) -
加入 API 認證
- 建議使用 Flask-JWT-Extended
中優先
-
Rate Limiting
- 防止 API 濫用
- 建議使用 Flask-Limiter
-
日誌記錄
- 記錄所有 API 呼叫
- 已建立
DITSystemLog資料表
低優先
- HTTPS 強制
- 部署時使用 HTTPS
- 設定 HSTS Header
4. OWASP Top 10 檢查清單
| # | 風險 | 狀態 | 備註 |
|---|---|---|---|
| A01 | Broken Access Control | ⚠️ | 無認證機制 |
| A02 | Cryptographic Failures | ✅ | 密碼儲存於環境變數 |
| A03 | Injection | ✅ | ORM 防護 |
| A04 | Insecure Design | ✅ | - |
| A05 | Security Misconfiguration | ✅ | - |
| A06 | Vulnerable Components | ✅ | 使用主流套件 |
| A07 | Auth Failures | ⚠️ | 無認證機制 |
| A08 | Data Integrity Failures | ✅ | - |
| A09 | Logging Failures | ⚠️ | 待完善日誌 |
| A10 | SSRF | ✅ | 無外部請求風險 |
5. 結論
系統基礎安全防護已到位,建議在正式部署前:
- 加入 API 認證機制
- 啟用 CSRF 保護
- 完善系統日誌記錄
審視人員: Claude AI 審視日期: 2024-12-12