correções no py

This commit is contained in:
thiago.purkote 2024-09-19 10:23:26 -03:00
parent c6389e53b3
commit e037e8c9c7
1 changed files with 9 additions and 5 deletions

View File

@ -16,10 +16,6 @@ from flask_talisman import Talisman
import influxdb_client, time import influxdb_client, time
from influxdb_client import InfluxDBClient, Point, WritePrecision from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS 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 import ldap3
# Carregar variáveis de ambiente do arquivo .env # 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 return json_data # Retorna todo o JSON carregado
@app.route('/login', methods=['POST']) @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(): def login():
data = request.get_json() data = request.get_json()
username_full = data.get('username') # Extrai o e-mail completo do usuário dos dados da requisição. 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. 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 # Validação do formato do e-mail
if not re.match(r"[^@]+@[^@]+\.[^@]+", username_full): if not re.match(r"[^@]+@[^@]+\.[^@]+", username_full):
return jsonify({'msg': 'Formato de e-mail inválido'}), 400 return jsonify({'msg': 'Formato de e-mail inválido'}), 400