Zeige Username beim Password-Setzen / Prüfe hinterher auf problematische Zeichen, statt dem Benutzer anzuzeigen dass er de nicht verwenden soll
Bernd Wurst

Bernd Wurst commited on 2013-03-02 15:57:40
Zeige 2 geänderte Dateien mit 16 Einfügungen und 2 Löschungen.

... ...
@@ -48,6 +48,17 @@ function get_uid_for_token($token)
48 48
   return $data['uid'];  
49 49
 }
50 50
 
51
+function get_username_for_uid($uid) 
52
+{
53
+  $uid = (int) $uid;
54
+  $result = db_query("SELECT username FROM system.useraccounts WHERE uid={$uid}");
55
+  if (mysql_num_rows($result) != 1) {
56
+    system_failure("Unexpected number of users with this uid (!= 1)!");
57
+  }
58
+  $item = mysql_fetch_assoc($result);
59
+  return $item['username'];
60
+}
61
+
51 62
 function validate_uid_token($uid, $token)
52 63
 {
53 64
   expire_tokens();
... ...
@@ -37,6 +37,8 @@ if (isset($_REQUEST['token']))
37 37
         input_error("Die beiden Passwort-Eingaben stimmen nicht überein.");
38 38
       elseif ($_POST['password'] == '')
39 39
         input_error("Es kann kein leeres Passwort gesetzt werden");
40
+      elseif (preg_match('/["\'\\\\]/', $_POST['password']) === 1)
41
+        input_error("Das Passwort enthält problematische Zeichen. Bitte keine Anführungszeichen und kein Backslash benutzen.");
40 42
       elseif (($result = strong_password($_POST['password'])) !== true)
41 43
         input_error("Das Passwort ist zu einfach (cracklib sagt: {$result})!");
42 44
       else
... ...
@@ -63,11 +65,12 @@ if (isset($_REQUEST['token']))
63 65
 
64 66
 if ($show == 'password')
65 67
 {
68
+  $username = get_username_for_uid($uid);
66 69
   title("Neues Passwort setzen");
67
-  output('<p>Bitte legen Sie jetzt Ihr neues Passwort fest.</p>
68
-  <p>Aufgrund einer technischen Einschränkung sollten Sie momentan auf Anführungszeichen (" und \') sowie auf Backslashes (\) im Passwort verzichten.</p>'.
70
+  output('<p>Bitte legen Sie jetzt Ihr neues Passwort fest.</p>'.
69 71
   html_form('initialize_useraccount', '', '', '<p style="display: none"><input type="hidden" name="uid" value="'.$uid.'" />
70 72
   <input type="hidden" name="token" value="'.$token.'" /><input type="hidden" name="agb" value="1" /></p>
73
+  <p><span class="login_label">Ihr Benutzername:</span> <strong>'.$username.'</strong></p>
71 74
   <p><span class="login_label">Neues Passwort:</span> <input type="password" name="password" size="30" /></p>
72 75
   <p><span class="login_label">Bestätigung:</span> <input type="password" name="password2" size="30" /></p>
73 76
   <p><span class="login_label">&#160;</span> <input type="submit" value="Passwort setzen" /></p>
74 77