Skip to content

Commit e79bf89

Browse files
authored
Allow to check across multiple domains in URL validation (#955)
1 parent 23dc7db commit e79bf89

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

py4web/core.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -911,10 +911,16 @@ def URL( # pylint: disable=invalid-name
911911
if scheme is not False:
912912
original_url = request.environ.get("HTTP_ORIGIN") or request.url
913913
orig_scheme, _, domain = original_url.split("/", 3)[:3]
914-
expected_domain = os.environ.get("PY4WEB_DOMAIN")
915-
if expected_domain and domain != expected_domain:
916-
logging.warning(f"Possible cache poisoning blocked: url={original_url}")
917-
domain = expected_domain
914+
expected_domains = [
915+
domain_item.strip()
916+
for domain_item in os.environ.get("PY4WEB_DOMAINS", "").split(",")
917+
if domain_item
918+
]
919+
if expected_domains and domain not in expected_domains:
920+
logging.warning(
921+
"Possible cache poisoning blocked: url=%s", original_url
922+
)
923+
domain = expected_domains[0]
918924
if scheme is True:
919925
scheme = orig_scheme
920926
elif scheme is None:

0 commit comments

Comments
 (0)