Hi,

I wrote a PR to fix the following urllib security vulnerability:

"urlparse of urllib returns wrong hostname"
https://bugs.python.org/issue36338
https://github.com/python/cpython/pull/16780

While writing my fix, I found another issue about "[" and "]"
characters in the user:password section of an URL:

"urllib IPv6 parsing fails with special characters in passwords"
https://bugs.python.org/issue33342

My PR tries to validate the "scope" part of
"http://[IPv6%scope]/...": reject "%", "[" and "]" in scope. But I'm
not sure that Python should really support the scope in an URL. Should
we just reject URL with "%scope"? Or if we allow it, which characters
should be allowed and/or rejected?

It seems like Firefox and Chromium don't support an IPv6 with as a
scope: when I type http://[::1%1]/ : they open a Google search on this
URL.

I tested Python urllib.request.urlopen() with my PR:
http://[::1%1]:8080/ works as expected: it opens a connection to the
IPv6 localhost in the loopback interface (TCP port 8080).

Currently, my PR allows "%scope" but it rejects "%", "[" and "]"
characters in the scope.

I let you go through these 2 RFC about IPv6 scope / "zone identifier":

https://tools.ietf.org/html/rfc4007
https://tools.ietf.org/html/rfc6874

Victor
-- 
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/T7NJBO6B32KZZ5KAXJXHT7CTKU7634UU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to