Seite 1 von 1

Sonderzeichen in Passwörtern

Verfasst: 23.04.2008 21:07
von culicidae
Hallo Forum,

um es meinen Benutzern einfacher zu machen benutze ich für meine Seite und mein Forum dieselben Logindaten, indem ich das eingegebene Passwort mit dem über phpbb_check_hash() mit dem Hash in der DB abgleiche, das funktioniert auch für die meisten Benutzer, aber leider nicht für die, die Sonderzeichen im PW haben.

Meine Frage ist jetzt, was stellt das Board noch mit den Sonderzeichen an, bevor es die an phpbb_check_hash() übergibt?

Beispielpasswort: "\$" (inklusive Anführungszeichen)
php macht ja aus den Anführungszeichen ein \" aber auch wenn ich den Backslash wieder entferne bringt das nichts.

Hat einer von euch eine Idee?

Vielen Dank schon mal!

Gruß
culicidae

Verfasst: 24.04.2008 07:38
von Dr.Death
Hallo,

das Passtwort wird durch die Funktion

request_var()

mit dem Parameter Multibyte true geschleust.

In der Funktion request_var() wird das Passwort dann der Funktion

set_var()

wiederum mit dem Parameter Mutlibyte true übergeben.

Da es sich bei dem Passwort um einen String handelt, werden folgende Code Zeilen in der includes/functions.php durchlaufen:


Code: Alles auswählen

	if ($type == 'string')
	{
		$result = trim(htmlspecialchars(str_replace(array("\r\n", "\r"), array("\n", "\n"), $result), ENT_COMPAT, 'UTF-8'));

		if (!empty($result))
		{
			// Make sure multibyte characters are wellformed
			if ($multibyte)
			{
				if (!preg_match('/^./u', $result))
				{
					$result = '';
				}
			}
			else
			{
				// no multibyte, allow only ASCII (0-127)
				$result = preg_replace('/[\x80-\xFF]/', '?', $result);
			}
		}

		$result = (STRIP) ? stripslashes($result) : $result;
	}

Verfasst: 24.04.2008 14:27
von culicidae
Hi Dr. Death,

danke, das war genau, was ich wissen wollte!

Gruß
culicidae