From e037e8c9c7dd00273d3991058ed1651ca563d838 Mon Sep 17 00:00:00 2001 From: "thiago.purkote" Date: Thu, 19 Sep 2024 10:23:26 -0300 Subject: [PATCH] =?UTF-8?q?corre=C3=A7=C3=B5es=20no=20py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- python/server.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/server.py b/python/server.py index 9ed9b91..8efa30a 100644 --- a/python/server.py +++ b/python/server.py @@ -16,10 +16,6 @@ from flask_talisman import Talisman import influxdb_client, time from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client.client.write_api import SYNCHRONOUS -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.backends import default_backend import ldap3 # Carregar variáveis de ambiente do arquivo .env @@ -137,11 +133,19 @@ def get_influxdb_config(domain, mysql): return json_data # Retorna todo o JSON carregado @app.route('/login', methods=['POST']) -@csrf.exempt # Endpoints de autenticação como este podem ser excluídos da proteção CSRF, pois o token CSRF não está disponível antes do login; remova este decorador se quiser aplicar proteção CSRF. +@csrf.exempt # Endpoints de autenticação como este podem ser excluídos da proteção CSRF, remova se quiser aplicar. def login(): data = request.get_json() username_full = data.get('username') # Extrai o e-mail completo do usuário dos dados da requisição. password = data.get('password') # Extrai a senha dos dados da requisição. + + # Verificação básica para detecção de padrões de SQL Injection + sql_injection_pattern = r"(--|\b(SELECT|UNION|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER)\b|;|'|\")" + + # Checar se o username_full ou o password contêm padrões suspeitos + if re.search(sql_injection_pattern, username_full, re.IGNORECASE) or re.search(sql_injection_pattern, password, re.IGNORECASE): + return jsonify({'msg': 'A solicitação foi bem formada, mas não pôde ser atendida devido a erros semânticos.'}), 422 # Retorna o status 422 + # Validação do formato do e-mail if not re.match(r"[^@]+@[^@]+\.[^@]+", username_full): return jsonify({'msg': 'Formato de e-mail inválido'}), 400