我最近意识到 psycopg2 中的一些错误消息会显示完整的数据库 uri。该 dbi 的凭据显然是秘密的,对它们的访问比对日志的访问安全得多。
psycopg2.OperationalError: connection to server at "my_database_uri.including_password.in_plain_text.com" (db_ip_address), port 5432 failed: FATAL: the database system is shutting down
我计划捕获错误以混淆错误消息,但是有更简单的方法吗?
您可以使用错误处理来覆盖错误。 例子:
import re
import logging
import psycopg2
try:
conn = psycopg2.connect(conn_string)
except psycopg2.OperationalError as e:
# Mask sensitive information from the exception message
error_message = re.sub(r"password=.*?\s", "password=**** ", str(e))
logging.error("Database error: %s", error_message)