Nachfolgend ein Beispiel, wie ich mir den besseren Schutz der Passwörter vorstelle.
Das angefügte Archiv enthält eine Erweiterung, welche verhindert, dass die SMTP Passwörter aus den Einstellungen und aus dem Newsletter Channel an den Browser übertragen wird. Zudem wird auch das FTP-Passwort der Erweiterung BackupDBPlus berücksichtigt.
Die Variante mittels Erweiterung funktioniert zwar, ich würde mir dieses Verhalten jedoch bei allen Eingabe-Feldern vom Typ Passwort wünschen. Dann müsste nicht für jedes eine neue Behandlung hinzugefügt werden.
Zum verschlüsselten Speichern der Passwörter in der Datenbank (nicht relevant für das globale SMTP-Passwort, da dieses in der localconfig.php steht) kann in der Erweiterung im Verzeichnis dca, Datei tl_newsletter_channel die Zeile 44 auskommentiert werden.
Damit das ganze dann auch funktioniert muss noch in der Datei Newsletter.php des original Newsletter-Moduls folgendes in die Funktion send hinzugefügt werden.
PHP-Code:
// Overwrite the SMTP configuration
if ($objNewsletter->useSMTP)
{
if (isset($GLOBALS['TL_DCA']['tl_newsletter_channel']['fields']['smtpPass']['eval']['encrypt']) &&
$GLOBALS['TL_DCA']['tl_newsletter_channel']['fields']['smtpPass']['eval']['encrypt'])
{
$objEncrypt = Encryption::getInstance();
$objNewsletter->smtpPass = $objEncrypt->decrypt($objNewsletter->smtpPass);
}
$GLOBALS['TL_CONFIG']['useSMTP'] = true;
(Die ersten drei, sowie die letzte Zeile sind zur Orientierung übernommen)
Weiterhin kann die Encryption transparent werden, falls kein mcrypt auf dem Server exisitiert, wenn folgende Zeilen in der Encryption.php ergänzt werden:
PHP-Code:
protected function __construct()
{
if (!function_exists('mcrypt_module_open'))
{
$this->EncryptionEnabled = false;
return;
}
$this->EncryptionEnabled = true;
[...]
public function encrypt($strValue)
{
if (!$this->EncryptionEnabled) return $strValue;
[...]
public function decrypt($strValue)
{
if (!$this->EncryptionEnabled) return $strValue;
(Die drei Funktionen existieren schon, es geht nur um die ersten Zeilen danach)
Ergo, wenn kein mcrypt vorhanden, dann wird bei encrypt und decrypt nichts verändert.
Vielleicht kommt jetzt nach Pfingsten noch ein paar mehr Meinungen zusammen?
Lesezeichen