fix: harden Polygon operation validation
This commit is contained in:
@@ -9,6 +9,7 @@ Blueprint "mock" с префиксом /api/v1/svc/_mock.
|
||||
"""
|
||||
|
||||
import os
|
||||
import math
|
||||
|
||||
from flask import Blueprint, g, jsonify, request, abort
|
||||
from werkzeug.local import LocalProxy
|
||||
@@ -21,9 +22,7 @@ SERVICES = LocalProxy(lambda: _cfg.get_services(g.stand_id))
|
||||
|
||||
bp = Blueprint("mock", __name__, url_prefix="/api/v1/svc/_mock")
|
||||
|
||||
# Токен для защиты _mock/* эндпоинтов (из env, опционально).
|
||||
# Дублирует глобальную проверку в app.py, но оставлен для обратной совместимости
|
||||
# и ясности — _mock/* исторически имели отдельную защиту.
|
||||
# Токен для защиты _mock/* эндпоинтов (опционален для локального dev-режима).
|
||||
_MOCK_TOKEN = os.getenv("MOCK_AUTH_TOKEN", "")
|
||||
|
||||
|
||||
@@ -35,8 +34,8 @@ def _check_mock_auth():
|
||||
Если токен не задан в env — пропускаем всех (dev-режим).
|
||||
Если задан — требуем совпадения с заголовком.
|
||||
|
||||
Примечание: app.before_request уже проверяет Authorization: Bearer;
|
||||
этот хук — дополнительная защита для _mock/* эндпоинтов."""
|
||||
Основные API-маршруты не используют эту проверку. Если токен не настроен,
|
||||
локальные тесты могут вызывать служебные endpoints без заголовка."""
|
||||
if _MOCK_TOKEN and request.headers.get("X-Mock-Auth") != _MOCK_TOKEN:
|
||||
abort(403)
|
||||
|
||||
@@ -130,6 +129,8 @@ def mock_set_delay(seconds):
|
||||
val = float(seconds)
|
||||
except (ValueError, TypeError):
|
||||
return jsonify({"error": f"invalid delay: {seconds}"}), 400
|
||||
if not math.isfinite(val):
|
||||
return jsonify({"error": f"delay must be a finite number: {seconds}"}), 400
|
||||
if val < 0:
|
||||
return jsonify({"error": "delay must be >= 0"}), 400
|
||||
if val > _MAX_DELAY:
|
||||
|
||||
Reference in New Issue
Block a user