"""
Input Validation and Security Middleware for AegisLM Backend.
Provides comprehensive input validation, sanitization, and security checks
for all incoming requests to prevent common vulnerabilities.
"""
import re
import html
import logging
from typing import Dict, Any, List, Optional
from fastapi import Request, HTTPException, status
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.responses import JSONResponse
logger = logging.getLogger(__name__)
class SecurityValidator:
"""
Security validation utilities for input sanitization and validation.
"""
# Common attack patterns
SQL_INJECTION_PATTERNS = [
r"(\b(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC|UNION)\b)",
r"(\b(OR|AND)\s+\d+\s*=\s*\d+)",
r"(\b(OR|AND)\s+['\"][\w\s]*['\"]\s*=\s*['\"][\w\s]*['\"])",
r"(--|#|\/\*|\*\/)",
r"(\b(SCRIPT|JAVASCRIPT|VBSCRIPT|ONLOAD|ONERROR)\b)",
]
XSS_PATTERNS = [
r"",
r"javascript:",
r"vbscript:",
r"onload\s*=",
r"onerror\s*=",
r"onclick\s*=",
r"