Potential fix for code scanning alert no. 118: Log Injection
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
a04006f75b
commit
23d5377a50
@@ -14,6 +14,15 @@ from typing import List, Optional, Tuple
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def _sanitize_for_log(value: str) -> str:
|
||||||
|
"""
|
||||||
|
Remove newline and carriage return characters from log values to prevent
|
||||||
|
log injection through user-controlled input.
|
||||||
|
"""
|
||||||
|
return value.replace("\r", "").replace("\n", "")
|
||||||
|
|
||||||
|
|
||||||
# Well-known DKIM selectors tried when no selectors are configured
|
# Well-known DKIM selectors tried when no selectors are configured
|
||||||
COMMON_DKIM_SELECTORS: List[str] = [
|
COMMON_DKIM_SELECTORS: List[str] = [
|
||||||
"default",
|
"default",
|
||||||
@@ -83,7 +92,7 @@ class BaseDNSProvider(ABC):
|
|||||||
if record.lower().startswith("v=dmarc1"):
|
if record.lower().startswith("v=dmarc1"):
|
||||||
return True, record
|
return True, record
|
||||||
except LookupError as exc:
|
except LookupError as exc:
|
||||||
logger.debug("DMARC lookup failed for %s: %s", domain, exc)
|
logger.debug("DMARC lookup failed for %s: %s", _sanitize_for_log(domain), exc)
|
||||||
return False, None
|
return False, None
|
||||||
|
|
||||||
async def check_spf(self, domain: str) -> Tuple[bool, Optional[str]]:
|
async def check_spf(self, domain: str) -> Tuple[bool, Optional[str]]:
|
||||||
@@ -94,7 +103,7 @@ class BaseDNSProvider(ABC):
|
|||||||
if record.lower().startswith("v=spf1"):
|
if record.lower().startswith("v=spf1"):
|
||||||
return True, record
|
return True, record
|
||||||
except LookupError as exc:
|
except LookupError as exc:
|
||||||
logger.debug("SPF lookup failed for %s: %s", domain, exc)
|
logger.debug("SPF lookup failed for %s: %s", _sanitize_for_log(domain), exc)
|
||||||
return False, None
|
return False, None
|
||||||
|
|
||||||
async def check_dkim(
|
async def check_dkim(
|
||||||
@@ -109,7 +118,10 @@ class BaseDNSProvider(ABC):
|
|||||||
return True, selector, record
|
return True, selector, record
|
||||||
except LookupError as exc:
|
except LookupError as exc:
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"DKIM lookup failed for selector=%s domain=%s: %s", selector, domain, exc
|
"DKIM lookup failed for selector=%s domain=%s: %s",
|
||||||
|
selector,
|
||||||
|
_sanitize_for_log(domain),
|
||||||
|
exc,
|
||||||
)
|
)
|
||||||
return False, None, None
|
return False, None, None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user