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.
<?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.