Author Topic: Login durch externe Login-Form mit CSRF-Schutz  (Read 1629 times)

Offline stalker150

  • Newbie
  • *
  • Posts: 2
Login durch externe Login-Form mit CSRF-Schutz
« on: November 22, 2011, 04:23:16 AM »
Hallo zusammen! :)

Meine PHP und Roundcubemail Kenntnisse reichen leider nicht aus, um mein Problem zu lösen deswegen bitte ich euch mir zu helfen.
Ich muss Roundcubemail-Logins durch eine Form außerhalb des Roundcube Ordners, allerdings auf dem selben Webserver ermöglichen. Das ganze soll "updatesicher" sein, was bedeutet, dass die Roundcube-Dateien (außer die Config) nicht angerührt werden dürfen.
Um das zu bewerkstelligen habe ich den Quellcode des Plugins "http_authentication" kopiert und in ein eigenes, leeres Plugin eingefügt. Dann noch folgenden Part modizifiert:

ALT:
  function authenticate($args)
  {
    
// Allow entering other user data in login form,
    // e.g. after log out (#1487953)
    
if (!empty($args['user'])) {

        return 
$args;
    }


NEU:
  function authenticate($args)
  {
    
// Allow entering other user data in login form,
    // e.g. after log out (#1487953)
    
if (!empty($args['user'])) {

    
$args['cookiecheck'] = false;
    
$args['valid'] = true;

        return 
$args;
    }


Das ist bislang die einzige Lösung auf die ich kommen konnte, um den Login von einer anderen Login Maske zu ermöglichen. Das Problem ist nur, dass damit die Sicherheit runtergeschraubt wird.
   $args['valid'] = true;
deaktiviert angeblich den CSRF-Schutz. Dadurch entsteht doch ein Sicherheitsrisiko, oder?

Gibt es eine andere Möglichkeit, Logins durch eine andere Form zu ermöglichen? Vielleicht in Verbindung damit, dass sich die Form auf dem selben Webserver befindet?

Ich hoffe ihr könnt mir da weiter helfen.

Stalker.

PS.: Um nach dem Logout wieder auf die neue Login-Form zu gelangen, habe ich folgenden Code am Ende des Plugin-Codes hinzugefügt:

//Logout Abfrage

	
if (isset(
$_GET['_task'])) {
	
	
if (
$_GET['_task'] == "logout") {
	
	
Header("Location: http://xx.xx.xx.xx/neues_design/webmail_login.php"); } }


Ist das eine elegante oder eine "kopfschüttel" Lösung? :P