diff --git a/backend/core/conf.py b/backend/core/conf.py index 889e5a3e..ad4aa207 100644 --- a/backend/core/conf.py +++ b/backend/core/conf.py @@ -184,9 +184,6 @@ class Settings(BaseSettings): LOG_ACCESS_FILENAME: str = 'fba_access.log' LOG_ERROR_FILENAME: str = 'fba_error.log' - # .env 操作日志 - OPERA_LOG_ENCRYPT_SECRET_KEY: str # secrets.token_hex(32) - # 操作日志 OPERA_LOG_PATH_EXCLUDE: list[str] = [ '/favicon.ico', @@ -198,8 +195,7 @@ class Settings(BaseSettings): f'{FASTAPI_API_V1_PATH}/oauth2/google/callback', f'{FASTAPI_API_V1_PATH}/oauth2/linux-do/callback', ] - OPERA_LOG_ENCRYPT_TYPE: int = 1 # 0: AES (性能损耗); 1: md5; 2: ItsDangerous; 3: 不加密, others: 替换为 ****** - OPERA_LOG_ENCRYPT_KEY_INCLUDE: list[str] = [ # 将加密接口入参参数对应的值 + OPERA_LOG_REDACT_KEYS: list[str] = [ 'password', 'old_password', 'new_password', diff --git a/backend/middleware/opera_log_middleware.py b/backend/middleware/opera_log_middleware.py index 765db869..d0a77df0 100644 --- a/backend/middleware/opera_log_middleware.py +++ b/backend/middleware/opera_log_middleware.py @@ -12,7 +12,7 @@ from starlette.requests import Request from backend.app.admin.schema.opera_log import CreateOperaLogParam from backend.app.admin.service.opera_log_service import opera_log_service from backend.common.context import ctx -from backend.common.enums import OperaLogCipherType, StatusType +from backend.common.enums import StatusType from backend.common.log import log from backend.common.prometheus.instruments import ( PROMETHEUS_EXCEPTION_COUNTER, @@ -25,7 +25,6 @@ from backend.common.queue import batch_dequeue from backend.common.response.response_code import StandardResponseCode from backend.core.conf import settings from backend.database.db import async_db_session -from backend.utils.encrypt import AESCipher, ItsDCipher, Md5Cipher from backend.utils.trace_id import get_request_trace_id @@ -208,20 +207,9 @@ class OperaLogMiddleware(BaseHTTPMiddleware): :param args: 需要脱敏的参数字典 :return: """ - for key, value in args.items(): - if key in settings.OPERA_LOG_ENCRYPT_KEY_INCLUDE: - match settings.OPERA_LOG_ENCRYPT_TYPE: - case OperaLogCipherType.aes: - args[key] = (AESCipher(settings.OPERA_LOG_ENCRYPT_SECRET_KEY).encrypt(value)).hex() - case OperaLogCipherType.md5: - args[key] = Md5Cipher.encrypt(value) - case OperaLogCipherType.itsdangerous: - args[key] = ItsDCipher(settings.OPERA_LOG_ENCRYPT_SECRET_KEY).encrypt(value) - case OperaLogCipherType.plan: - pass - case _: - args[key] = '******' - + for key in args: + if key in settings.OPERA_LOG_REDACT_KEYS: + args[key] = '[REDACTED]' return args @classmethod