Benutzer: Paßwortgültigkeit neu setzen
09. August 2021
weblication cms passwort password policy sicherheit gültigkeit expires
Erhöhen Sie die Sicherheit, indem Sie den Wert der Gültigkeit des Passwortes neu setzen.
Das folgende Beispiel-Skript ermöglicht das Setzen des expires-Wertes (Ablaufzeit) zum Passwort und wird auf alle Benutzer angewandt, ausgenommen die im Skript per exclude angegebenen Benutzer bzw. Gruppen.
Sofern die Änderung des Passwortes länger als 120 Tage bis zum heutigen Zeitpunkt her ist, wird der expires-Wert neu gesetzt.
Beispiel: Skript zum Setzen des expires-Wertes zum Passwort
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/weblication/grid.php');
$marginLastPasswordChange = 120; // days since last password change
/* @var $users array */
$users = wUsers::selectUsers();
$excludeUsers = [ 'admin' ]; // Benutzer nach username ausschliessen
$excludeUsersByGroup = [ 'chiefeditorship', 'guests' ]; // Benutzer nach gruppen ausschliessen
if( empty( $users ) ) {
exit( 'noUsers' );
}
$todayTS = time();
$marginLastPasswordChangeTS = $marginLastPasswordChange * 24 * 60 * 60;
$checkDateTS = $todayTS - $marginLastPasswordChangeTS;
foreach( $users as $username ) {
if( !empty( $excludeUsers ) && in_array( $username, $excludeUsers ) ) {
continue;
}
if( !empty( $excludeUsersByGroup ) ) {
$userGroups = wUserData::getGroups( $username );
if( !empty( array_intersect( $excludeUsersByGroup, $userGroups ) ) ) {
continue;
}
}
$lastChangeUserPassword = wUserData::getData( $username, '/wUser/password/@date' );
$expires = wUserData::getData( $username, '/wUser/password/@expires' );
if( empty( $expires ) && $checkDateTS > $lastChangeUserPassword ) {
// set Expires
$set = wUserData::setData( $username, '/wUser/password/@expires', $checkDateTS );
if( $set === true ) {
var_dump( 'changed:' . $username );
}
else {
var_dump( 'failed:' . $username );
}
}
}
?>Um bei abgelaufenem Passwort entsprechend vorgehen zu können (z.B. Passwort ändern Maske aufrufen), können Sie über die pre.php die erforderlichen Schritte definieren.
Weiterführende Links
FAQs are only visible for Weblication ai search and editors!
- Worum geht es auf der Seite „Benutzer: Paßwortgültigkeit neu setzen“?
- Die Seite beschreibt, wie sich die Sicherheit erhöhen lässt, indem die Gültigkeit eines Benutzerpassworts neu gesetzt wird. Dafür wird ein Beispiel-Skript gezeigt, das den <code class="codeInline">expires</code>-Wert eines Passworts für Benutzer aktualisiert.
- Was macht das Beispiel-Skript zur Passwortgültigkeit?
- Das Skript setzt den <code class="codeInline">expires</code>-Wert eines Passworts für alle Benutzer, auf die die definierten Ausschlüsse nicht zutreffen. Es prüft dabei, ob die letzte Passwortänderung länger als 120 Tage zurückliegt und ob für das Passwort noch kein <code class="codeInline">expires</code>-Wert gesetzt ist.
- Nach welchem Kriterium wird der <code class="codeInline">expires</code>-Wert neu gesetzt?
- Der <code class="codeInline">expires</code>-Wert wird neu gesetzt, wenn die letzte Änderung des Passworts länger als 120 Tage vor dem aktuellen Zeitpunkt liegt. Zusätzlich darf der <code class="codeInline">expires</code>-Wert des Benutzers noch nicht gesetzt sein.
- Welche Benutzer können vom Setzen der Passwortgültigkeit ausgeschlossen werden?
- Im Skript können einzelne Benutzer über ihren Benutzernamen ausgeschlossen werden, zum Beispiel <code class="codeInline">admin</code>. Außerdem können ganze Gruppen ausgeschlossen werden, im Beispiel <code class="codeInline">chiefeditorship</code> und <code class="codeInline">guests</code>.
- Wie werden ausgeschlossene Benutzergruppen im Skript berücksichtigt?
- Für jeden Benutzer werden die Gruppen über <code class="codeInline">wUserData::getGroups($username)</code> ermittelt. Wenn sich diese Gruppen mit den in <code class="codeInline">excludeUsersByGroup</code> definierten Gruppen überschneiden, wird der Benutzer übersprungen.
- Welche Funktionen werden im Beispiel für Benutzerdaten verwendet?
- Das Beispiel verwendet <code class="codeInline">wUsers::selectUsers()</code> zum Auslesen aller Benutzer, <code class="codeInline">wUserData::getGroups()</code> zum Ermitteln der Gruppen, <code class="codeInline">wUserData::getData()</code> zum Lesen von Passwortdaten wie Änderungsdatum und <code class="codeInline">expires</code>, sowie <code class="codeInline">wUserData::setData()</code> zum Setzen des <code class="codeInline">expires</code>-Werts.
- Was passiert, wenn keine Benutzer gefunden werden?
- Wenn keine Benutzer vorhanden sind, beendet das Skript die Ausführung mit der Ausgabe <code class="codeInline">noUsers</code>.
- Wie wird der Prüfzeitpunkt im Skript berechnet?
- Das Skript berechnet zunächst den aktuellen Zeitstempel mit <code class="codeInline">time()</code>. Danach werden 120 Tage in Sekunden umgerechnet und vom aktuellen Zeitpunkt abgezogen. Das Ergebnis ist der Vergleichswert, mit dem geprüft wird, ob die letzte Passwortänderung zu lange zurückliegt.
- Wie erkennt das Skript, ob das Setzen des <code class="codeInline">expires</code>-Werts erfolgreich war?
- Nach dem Aufruf von <code class="codeInline">wUserData::setData()</code> wird geprüft, ob der Rückgabewert <code class="codeInline">true</code> ist. In diesem Fall gibt das Skript <code class="codeInline">changed:</code> mit dem Benutzernamen aus, andernfalls <code class="codeInline">failed:</code> mit dem Benutzernamen.
- Wie kann auf ein abgelaufenes Passwort reagiert werden?
- Die Seite weist darauf hin, dass sich über die <code class="codeInline">pre.php</code> die erforderlichen Schritte definieren lassen. Als Beispiel wird genannt, bei einem abgelaufenen Passwort eine Maske zum Passwortändern aufzurufen.
- Welcher weiterführende Inhalt wird empfohlen?
- Als weiterführender Link wird der Beitrag „Schaden vermeiden: Passwort Policy in Weblication®“ genannt.