Session 2026-04-23: Security, Content-Schutz, Wiki-Temperament-Migration
Security (9 Fixes): - JWT_SECRET Pflicht-Check beim Start (Production) - Rate-Limit: Login (10/5min), Register (5/h), KI-Training (10/h), Giftköder (3/h) - KI-Training-Endpoint: Auth-Pflicht hinzugefügt - Private Profile aus Freunde-Suche gefiltert - OG-Tags XSS mit html.escape() gesichert - Globales File-Upload-Limit 20 MB (Middleware) - E-Mail-Maskierung für Moderatoren im Admin-Panel - IP-Blocklist in ratelimit.py Content-Schutz (4 Schichten): - robots.txt: /api/ komplett Disallow, SSR-Seiten Allow - Rate-Limit auf /api/wiki/rassen (60/min) + Detail (30/min) - Honeypot /api/wiki/trap + unsichtbarer Link in index.html - Wasserzeichen in KI-Enricher-Prompt Wiki Temperament-Migration: - 60-Wort Übersetzungsmap EN→DE - Datenmüll-Filter (hunderasse, dog breed etc.) - translate_existing_temperaments() + Admin-Button - SW by-v318, APP_VER 306
This commit is contained in:
parent
0f5f1c4c30
commit
15f854d96c
15 changed files with 284 additions and 53 deletions
|
|
@ -1,8 +1,10 @@
|
|||
"""BAN YARO — KI Routes"""
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi import APIRouter, Depends, HTTPException, Request
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
import ki as ki_module
|
||||
from auth import get_current_user
|
||||
from ratelimit import check as rl_check
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
|
@ -14,11 +16,10 @@ class TrainingRequest(BaseModel):
|
|||
|
||||
|
||||
@router.post("/training")
|
||||
async def ki_training(req: TrainingRequest):
|
||||
"""
|
||||
KI-Trainingsberatung für individuelle Verhaltens- und Trainingsprobleme.
|
||||
Kostenlos für alle (nutzt lokales Modell).
|
||||
"""
|
||||
async def ki_training(req: TrainingRequest, request: Request,
|
||||
user=Depends(get_current_user)):
|
||||
"""KI-Trainingsberatung für individuelle Verhaltens- und Trainingsprobleme."""
|
||||
rl_check(request, max_requests=10, window_seconds=3600, key="ki_training")
|
||||
if not req.problem or len(req.problem.strip()) < 10:
|
||||
raise HTTPException(400, "Bitte beschreibe das Problem genauer.")
|
||||
if len(req.problem) > 1000:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue