mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
bpo-35121: prefix dot in domain for proper subdomain validation (GH-10258)
Don't send cookies of domain A without Domain attribute to domain B when domain A is a suffix match of domain B while using a cookiejar with `http.cookiejar.DefaultCookiePolicy` policy. Patch by Karthikeyan Singaravelan.
This commit is contained in:
parent
738c19f4c5
commit
ca7fe50635
3 changed files with 45 additions and 2 deletions
|
|
@ -1148,6 +1148,11 @@ class DefaultCookiePolicy(CookiePolicy):
|
|||
req_host, erhn = eff_request_host(request)
|
||||
domain = cookie.domain
|
||||
|
||||
if domain and not domain.startswith("."):
|
||||
dotdomain = "." + domain
|
||||
else:
|
||||
dotdomain = domain
|
||||
|
||||
# strict check of non-domain cookies: Mozilla does this, MSIE5 doesn't
|
||||
if (cookie.version == 0 and
|
||||
(self.strict_ns_domain & self.DomainStrictNonDomain) and
|
||||
|
|
@ -1160,7 +1165,7 @@ class DefaultCookiePolicy(CookiePolicy):
|
|||
_debug(" effective request-host name %s does not domain-match "
|
||||
"RFC 2965 cookie domain %s", erhn, domain)
|
||||
return False
|
||||
if cookie.version == 0 and not ("."+erhn).endswith(domain):
|
||||
if cookie.version == 0 and not ("."+erhn).endswith(dotdomain):
|
||||
_debug(" request-host %s does not match Netscape cookie domain "
|
||||
"%s", req_host, domain)
|
||||
return False
|
||||
|
|
@ -1174,7 +1179,11 @@ class DefaultCookiePolicy(CookiePolicy):
|
|||
req_host = "."+req_host
|
||||
if not erhn.startswith("."):
|
||||
erhn = "."+erhn
|
||||
if not (req_host.endswith(domain) or erhn.endswith(domain)):
|
||||
if domain and not domain.startswith("."):
|
||||
dotdomain = "." + domain
|
||||
else:
|
||||
dotdomain = domain
|
||||
if not (req_host.endswith(dotdomain) or erhn.endswith(dotdomain)):
|
||||
#_debug(" request domain %s does not match cookie domain %s",
|
||||
# req_host, domain)
|
||||
return False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue