Semisecure Login Reimagined: Call-time pass-by-reference has been removed

Mai 8, 2012 in Coding, Security, Technik, Wordpress von Mac

GD Star Rating
loading...

Semisecure Login Reimagined ist ein Plugin für WordPress, um die Anmeldung von WordPress zu schützen. Dabei werden die Daten lokal auf dem Client verschlüsselt und erst dann über HTTP an den Server geschickt. Dort entschlüsselt das Plugin die Informationen und leitet sie an die zuständige Instanz weiter. Es ist also möglich ohne SSL und ohne Zertifikat Daten zu verschlüsseln. Dem Ausspähen von Passwörtern ist somit ein Riegel vorgesetzt.

[English:] Semisecure Login Reimagined is a WordPress plugin which encrypt the login through HTTP without SSL requirements. Credentials will be encrypted locally and sent to server whose decrypt data. You don’t need a certificate.

 

 

Problem

Das Plugin ist nunmehr seit über einem Jahr nicht mehr aktualisiert worden. Doch die Welt dreht sich weiter und mit dem Update auf PHP 5.4 funktioniert das Plugin nicht mehr. Je nach Einstellung des Webservers kommt es zu einem internen Serverfehler (Error Code 500) oder zu folgenden Fehlermeldungen.

[English:] After upgrading to PHP 5.4 you got errors while using like following. 

 

Error: MARC4 EncryptionPHP Fatal error: Call-time pass-by-reference has been removed in D:\wordpress\wp-content\plugins\semisecure-login-reimagined\classes\crypto-js\Cryptojs_MARC4.php on line 38

 

Error: AES EncryptionPHP Fatal error: Call-time pass-by-reference has been removed in D:\wordpress\wp-content\plugins\semisecure-login-reimagined\classes\crypto-js\Cryptojs_AES.php on line 44

 

 

Ursache / Cause

Seit PHP 5.4 können nun nur noch Variablen und “New”-Ausdrücke per Referenz übergeben werden. Da der Code jedoch längere Zeit nicht mehr angepasst wurde, wird diese Einschränkung nicht berücksichtigt und die Nutzung schlägt eben fehl.

[English:] Since PHP 5.4 it’s not allowed to pass parameters by reference. You can pass a variable or New statements by reference to a function so the function can modify the variable. 

 

PHP: Parameterübergabe per ReferenzPHP: Passing by Reference 

 

Lösung / Solution

Einzig bestehende Alternative ist, den Code selbständig anzupassen. Da ich kein PHP in 64 Bit nutze, weiß ich leider nicht welche Probleme während der Rabbit-Verschlüsselung auftreten. Rabbit funktioniert nicht einwandfrei mit 32 Bit-PHP. Ich habe aber sowohl die AES- als auch MARC4-Verschlüsselungsfunktion abgeändert und erfolgreich getestet. Anbei die Änderungen der letzten Version (3.2.0). Zu ändernde Abschnitte wurden hervorgehoben.

Wer das modifizierte Plugin Semisecure Login Reimagined (v 3.2.1) herunterladen möchte, kann den folgenden Abschnitt überspringen.

[English:] See the code that have to change for.  Walk through Download Section to get the modified Semisecure Login Reimagined Plugin (v 3.2.1). 

 

semisecure-login-reimagined\classes\crypto-js\Cryptojs_MARC4.php (Original)

 

semisecure-login-reimagined\classes\crypto-js\Cryptojs_MARC4.php (modifiziert)

 

semisecure-login-reimagined\classes\crypto-js\Cryptojs_AES.php (Original)

 

semisecure-login-reimagined\classes\crypto-js\Cryptojs_AES.php (modifiziert)

 

 

Download Semisecure Login Reimagined 3.2.1 (complete). 

Semisecure Login Reimagined Plugin 3.2.1 (FTP)Semisecure Login Reimagined Plugin 3.2.1 (HTTP)Installation Notes 

 

Semisecure Login Reimagined: Call-time pass-by-reference has been removed, 5.0 out of 5 based on 11 ratings

Related Posts: