diff --git a/api_server.py b/api_server.py index 7c220b7..57b1adc 100644 --- a/api_server.py +++ b/api_server.py @@ -208,17 +208,23 @@ class SecureVaultAPI: @self.app.before_request def force_https(): - """Force l'utilisation de HTTPS""" - # Vérification plus stricte de HTTPS + """Force l'utilisation de HTTPS - OBLIGATOIRE""" + # Vérification stricte de HTTPS is_https = ( request.is_secure or request.headers.get('X-Forwarded-Proto') == 'https' or - request.scheme == 'https' + request.scheme == 'https' or + request.environ.get('wsgi.url_scheme') == 'https' ) + # Vérification supplémentaire du port (6666 doit être HTTPS) + if request.environ.get('SERVER_PORT') == '6666' and not is_https: + logger.warning(f"Tentative d'accès HTTP sur le port 6666 rejetée depuis {request.remote_addr}") + abort(400, description="HTTPS OBLIGATOIRE - Cette API ne fonctionne qu'en HTTPS sur le port 6666") + if not is_https: logger.warning(f"Tentative d'accès HTTP rejetée depuis {request.remote_addr}") - abort(400, description="HTTPS requis - Cette API ne fonctionne qu'en HTTPS") + abort(400, description="HTTPS OBLIGATOIRE - Cette API ne fonctionne qu'en HTTPS") @self.app.route('/health', methods=['GET']) def health(): diff --git a/start_api.sh b/start_api.sh index e5199cd..08af5b6 100755 --- a/start_api.sh +++ b/start_api.sh @@ -41,8 +41,8 @@ pip install -r requirements.txt # Vérification des fichiers requis echo "🔍 Vérification des fichiers requis..." -if [ ! -f "api_server_secure.py" ]; then - echo "❌ Fichier api_server_secure.py non trouvé" +if [ ! -f "api_server.py" ]; then + echo "❌ Fichier api_server.py non trouvé" exit 1 fi @@ -118,7 +118,7 @@ echo "" # Démarrage de l'API avec gestion des signaux trap 'echo ""; echo "🛑 Arrêt de l\'API..."; kill $API_PID 2>/dev/null; exit 0' INT TERM -python3 api_server_secure.py & +python3 api_server.py & API_PID=$! # Attente du démarrage diff --git a/test_api.py b/test_api.py index 7d2478d..f6d7aba 100644 --- a/test_api.py +++ b/test_api.py @@ -76,6 +76,7 @@ def test_file_access(): print("\n📁 Test d'accès au fichier...") try: + # Test avec l'environnement dev qui existe response = requests.get( f"{BASE_URL}/dev/bitcoin/bitcoin.conf", verify=VERIFY_SSL,