Univention Bugzilla – Bug 17691
Escapen von Sonderzeichen in Benutzernamen und Passwort
Last modified: 2010-05-18 10:00:24 CEST
Werden Sonderzeichen in Benutzernamen oder Passwort verwendet (z.B. ":" oder "@") kann es im Updater bei der Proxy-Authentifizierung bzw. bei der Basic-Auth zu Problemen bei den daraus generierten URLs kommen. deb http://user@user:passwd:passwd@host/path/ ucs_2.2-0/all Der Updater sollte in den UCR-Templates grundsätzlich eine urlescaped Variante von Benutzernamen und Passwort ausgeben.
Der updater-Teil ist gefixed, aber wegen dem Debian-Bug http://bugs.debian.org/500560 sind "@:/" weiterhin nicht möglich. \item Benutzernamen und Passwörter für die Proxy-Authentifikation können alle Zeichern außer ,,\texttt{@}'', ,,\texttt{:}'' und ,,\texttt{/}'' enthalten (\ucsBug{17691}).
Das sollte funktionieren, wenn Username/Passwort url-encodet dort eingetragen werden ('@' == '%40'). Hast du das mal getestet?
FYI: Aufgefallen bei ucs-test/updater/47: UCR löscht Leerzeichen am Anfang und Ende des Wertes, weshalb Benutzernamen und Passwörter nicht damit anfangen und enden dürfen: # ucr set test=" foo " Create test # sed -ne '/^test:/s/^\|$/|/gp' /etc/univention/base.conf |test: foo | # ucr get test | sed 's/^/|/;s/$/|/' |foo| # ucr shell test | sed 's/^/|/;s/$/|/' |test="foo"| # python2.4 -c 'import univention.config_registry as c;u=c.ConfigRegistry();u.load();print "|%s|"%u.get("test")' |foo|
svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/47component-auth-special svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/18proxy-special Beim Auslesen von proxy/http werden URL-escapte Zeichen jetzt dekodiert, bevor sie als HTTP-Header an der Proxy-Server geschickt werden. Trotzdem gibt es einige Zeichen, die man besser nicht benutzten sollte: Username: :/[ Passwort: @/[ Das Problem ist dabei nicht der Updater, sondern die APT-Programme: Diese zerlegen die URLs flasch und scheitern dann daran. (die URLs sind korrekt und werden in den Tests per lwp-request überprüft und funktionieren damit auch ohne Probleme). Noch eine Anmerkung zur Proxy-Konfiguration: Es gibt mehrere proxy/*-UCR-Variablen, die von verschiedenen Programmen leicht unterschiedlich genutzt werden: proxy/http: Enthält eine gebrauchsfertige http_proxy-Variable, d.h. Sonderzeichen müssen darin %-escaped sein. Wird in /etc/profiles, /etc/apt/apr.conf.d/80proxy.conf und von univention/updater/tools.py verwendet. proxy/address, proxy/port, proxy/username, proxy/password: werden nur in /etc/apt/apr.conf.d verwendet. Die Informationen aus proxy/username und proxy/password werden dabei ggf. nochmals zu den ggf. in proxy/http bereits vorhandenen Informationen hinzugefügt! Das würde dann nur für APT gelten, nicht aber für alle anderen Programme, die auf die environment-Variable aus /etc/profiles angewiesen sind. Sollten proxy/username und proxy/passwort doch verwendet werden, so ist dabei darauf zu achten, daß nicht-ASCII-Zeichen derzeit nicht escaped werden, dies also manuell passieren muß. Außerdem wird dort eine ggf. vorhandene Groß-/Kleinschreibung bei Benutzername und Passwort zunichte gemacht. -> Neuer Bug
(In reply to comment #4) > svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/47component-auth-special > svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/18proxy-special > > Beim Auslesen von proxy/http werden URL-escapte Zeichen jetzt dekodiert, bevor > sie als HTTP-Header an der Proxy-Server geschickt werden. Getestet wurde mit %20 (Leerzeichen) und %40 (@). Der Updater hat keine Probleme, apt-get läuft wie beschrieben in den Debian-Bug. Es wurde mit und ohne Proxy-Angabe die Angaben für Releases, Sec-Updates und Components geprüft (letztere mit und ohne Passwort). > proxy/http: Enthält eine gebrauchsfertige http_proxy-Variable, d.h. > Sonderzeichen müssen darin %-escaped sein. Wird in /etc/profiles, > /etc/apt/apr.conf.d/80proxy.conf und von univention/updater/tools.py verwendet. Hat funktioniert. Siehe oben. > proxy/address, proxy/port, proxy/username, proxy/password: werden nur in > /etc/apt/apr.conf.d verwendet. Die Informationen aus proxy/username und > proxy/password werden dabei ggf. nochmals zu den ggf. in proxy/http bereits > vorhandenen Informationen hinzugefügt! Das würde dann nur für APT gelten, nicht > aber für alle anderen Programme, die auf die environment-Variable aus > /etc/profiles angewiesen sind. > Sollten proxy/username und proxy/passwort doch verwendet werden, so ist dabei > darauf zu achten, daß nicht-ASCII-Zeichen derzeit nicht escaped werden, dies > also manuell passieren muß. > Außerdem wird dort eine ggf. vorhandene Groß-/Kleinschreibung bei Benutzername > und Passwort zunichte gemacht. -> Neuer Bug Bug18397: diese 4 UCR-Variablen sollten entfernt werden
UCS 2.3-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".