back

Knowledge Centre

Sicherung der Passwortspeicherung in Drupal 7: Leitfaden für bewährte Verfahren

| 11.05.2016

Sicherung der Passwortspeicherung in Drupal 7: Leitfaden für bewährte Verfahren

Die Sicherheit von Passwörtern bleibt ein kritisches Anliegen in der Webentwicklung, insbesondere angesichts der zunehmenden Häufigkeit von Cyberangriffen. Dieser Leitfaden erklärt, wie Sie eine sichere Passwortspeicherung in Drupal 7 mit modernen PHP-Passwort-Hashing-Techniken implementieren können.

Grundlagen der Passwortsicherheit verstehen

Sichere Passwortspeicherung basiert auf korrektem kryptographischen Hashing anstatt einfacher Verschlüsselung oder Speicherung im Klartext. Die standardmäßige Passwortbehandlung von Drupal 7 ist ziemlich robust, aber das Verständnis, wie man zusätzliche Sicherheitsmaßnahmen implementiert, kann für benutzerdefinierte Implementierungen oder spezifische Anforderungen wertvoll sein.

Sichere Passwortspeicherung implementieren

Verwendung der modernen Passwort-Hashing-API

Die Passwort-Hashing-API von PHP bietet einen standardisierten, sicheren Ansatz zur Passwortverwaltung. Für Drupal 7-Websites, die auf PHP-Versionen 5.3.7 bis 5.5.0 laufen, müssen Sie die password_compat-Bibliothek installieren:

composer require ircmaxell/password_compat

Diese Bibliothek bietet vier wesentliche Funktionen für die Passwortverwaltung:

// Ein neues Passwort für die Speicherung hashen
$hashedPassword = password_hash(
   $plainTextPassword,
   PASSWORD_DEFAULT,
   ['cost' => 12]
);
// Ein Passwort gegen einen gespeicherten Hash überprüfen
$isValid = password_verify($inputPassword, $storedHash);
// Beispiel-Implementierung
if ($isValid) {
   // Passwort ist korrekt - Fortfahren mit der Authentifizierung
   drupal_set_message('Authentifizierung erfolgreich');
} else {
   // Ungültiges Passwort
   drupal_set_message('Ungültige Anmeldeinformationen', 'error');
}
// Überprüfen, ob ein Passwort neu gehasht werden muss (z.B., wenn Sicherheitsparameter geändert wurden)
if (password_needs_rehash($storedHash, PASSWORD_DEFAULT, ['cost' => 12])) {
   // Den neuen Hash speichern
   $newHash = password_hash($plainTextPassword, PASSWORD_DEFAULT, ['cost' => 12]);
   // Den gespeicherten Hash in Ihrer Datenbank aktualisieren
}
// Informationen über den Hash abrufen
$hashInfo = password_get_info($storedHash);

Integration mit Drupal 7

Um dies in Ihrer Drupal 7-Website zu implementieren, könnten Sie ein benutzerdefiniertes Modul erstellen:

<?php
/**
* Implementiert hook_user_presave().
* Stellt sicher, dass Passwörter ordnungsgemäß gehasht werden, bevor sie gespeichert werden.
*/
function mymodule_user_presave(&$edit, $account, $category) {
 if (isset($edit['pass'])) {
   $edit['pass'] = password_hash(
     $edit['pass'],
     PASSWORD_DEFAULT,
     ['cost' => 12]
   );
 }
}
/**
* Benutzerdefinierte Funktion zur Passwortüberprüfung.
*/
function mymodule_verify_password($password, $hash) {
 return password_verify($password, $hash);
}

Sicherheitsüberlegungen

1. Kostenfaktor: Der 'cost'-Parameter (in unseren Beispielen auf 12 gesetzt) bestimmt die rechnerische Komplexität des Hashs. Höhere Werte erhöhen die Sicherheit, aber auch die Verarbeitungszeit. Passen Sie dies an die Fähigkeiten Ihres Servers an.

2. Hash-Speicherung: Speichern Sie immer den kompletten Hash-String, der die Informationen über Algorithmus, Kosten und Salt enthält.

3. Passwortvalidierung: Implementieren Sie angemessene Anforderungen an die Passwortkomplexität:

function mymodule_validate_password_strength($password) {
 $errors = array();
 
 if (strlen($password) < 8) {
   $errors[] = t('Das Passwort muss mindestens 8 Zeichen lang sein.');
 }
 
 if (!preg_match('/[A-Z]/', $password)) {
   $errors[] = t('Das Passwort muss mindestens einen Großbuchstaben enthalten.');
 }
 
 // Fügen Sie bei Bedarf weitere Validierungen hinzu
 
 return $errors;
}

Best Practices

1. Speichern Sie niemals Passwörter im Klartext
2. Verwenden Sie starke Salting-Methoden (automatisch durch password_hash gehandhabt)
3. Implementieren Sie Passwortalterungsrichtlinien, wo dies angemessen ist
4. Regelmäßige Sicherheitsaudits des passwortbezogenen Codes
5. Halten Sie PHP und alle sicherheitsrelevanten Bibliotheken auf dem neuesten Stand

Fehlerbehandlung

Implementieren Sie immer eine angemessene Fehlerbehandlung bei der Arbeit mit Passwörtern:

try {
 $hashedPassword = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
 if ($hashedPassword === false) {
   watchdog('security', 'Passwort-Hashing fehlgeschlagen', array(), WATCHDOG_ERROR);
   throw new Exception('Fehler bei der Passwortverarbeitung');
 }
} catch (Exception $e) {
 // Behandeln Sie den Fehler angemessen
 drupal_set_message(t('Während der Passwortverarbeitung ist ein Fehler aufgetreten.'), 'error');
}
```

Indem Sie diese Richtlinien befolgen und angemessene Maßnahmen zur Passwortsicherheit implementieren, können Sie die Sicherheit des Authentifizierungssystems Ihrer Drupal 7-Website erheblich verbessern.

827627692.jpg
  • Wissen
    Wissenszentrum
    Im Gehirn einer KI
  • Wissen
    Wissenszentrum
    Feinabstimmung von LLaMA zur Nachbildung von Eminescus literarischem Stil
  • Wissen
    Wissenszentrum
    Ein neues Zeitalter beginnt: Drupal CMS 1.0 startet