| Author |
Message |
stoby89
knows MySQLDumper

Joined: 04 May 2011
Posts: 3

|
Posted:
2011-05-04, 16:07 Perl MySQL Authentifizierung |
  |
Jetzt war ich gerade dabei verzweifelt einen ewig langen Beitrag zu schreiben, da mein Login via Perl nicht funktioniert und was ich schon alles versucht habe, als mir beim weiteren Experimentieren an der Konfiguration der Fehler aufgefallen ist.
DBI connect('einedatenbank:localhost:3306','mysqldumper-benutzer',...) failed: Access denied for user 'mysqldumper-benutzer'@'localhost' (using password: YES) at crondump.pl line 340
Es war die Tatsache, dass in der Konfiguration für das Passwort doppelte Anführungszeichen anstatt einfache verwendet wurden. Das hat beim Interpretieren des Codes die Folge, dass das Backslash-Zeichen als Startzeichen für Sonderzeichen verwendet wird (zum Beispiel \n für den Zeilenumbruch), sodass nachfolgender Text fehlinterpretiert wird.
Bedeutet: Wenn man komplexe Passwörter mit Sonderzeichen verwendet, bei denen ein Backslash vorkommt, kann sich der MySQLDumper nicht mehr am MySQL Server via Perl authentifizieren. Komischerweise kommt PHP hingegen damit klar, denn der Zugriff mit den selben Daten klappt über die Weboberfläche.
Da kann man nämlich lange an den Berechtigen spielen, wenn einfach nur bei der Authentifizierung das Passwort falsch gesendet wird.
Daher der Tipp an die Entwickler: Im nächsten Release die doppelten Anführungszeichen beim dbpass in der Konfiguration (config.php und work/mysqldumper.php) anpassen.
|
|
  |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2011-05-04, 20:40 (No subject) |
  |
Ich kann Deiner Argumentation nicht so ganz folgen.
Die Konfiguration, die von Perl benutzt wird, ist die Datei mysqldumper.conf.php und nicht mysqldumper.php (die wird nur von PHP benutzt). Dort werden beim Speichern Sonderzeichen maskiert (siehe inc/functions.php ab Zeile 320). Es kann höchsten sein, dass Du noch eines benutzt, welches wir hier noch nicht berücksichtigt haben. Den Baskslash haben wir allerdings drin.
Check das bitte mal.
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
stoby89
knows MySQLDumper

Joined: 04 May 2011
Posts: 3

|
Posted:
2011-05-10, 22:14 (No subject) |
  |
« DSB » wrote: Ich kann Deiner Argumentation nicht so ganz folgen.
Die Konfiguration, die von Perl benutzt wird, ist die Datei mysqldumper.conf.php und nicht mysqldumper.php (die wird nur von PHP benutzt).
Das ist korrekt. Da hat sich ein kleiner fehler eingeschlichen. In der mysqldumper.php ist die Konfiguration korrekt. Die Konfigurationsdaten werden in einfachen Anführungszeichen dort gesetzt. Deswegen funktioniert der Zugriff auch in PHP.
In der mysqldumper.conf.php hingegen, werden die Konfigurationsdaten in doppelten Anführungszeichen gespeichert, sodass es beim Verwenden von Sonderzeichen (insb. beim Backslash) zu Fehlern kommt. Deswegen schlug bei mir der Zugriff über Perl fehl und über PHP nicht.
« DSB » wrote: Dort werden beim Speichern Sonderzeichen maskiert (siehe inc/functions.php ab Zeile 320). Es kann höchsten sein, dass Du noch eines benutzt, welches wir hier noch nicht berücksichtigt haben. Den Baskslash haben wir allerdings drin.
Ich habe die Zeilen mal kurz überflogen und eigentlich müssten diese richtig arbeiten. Ich glaube aber, dass die Funktion evt. nirgends aufgerufen wird, weil bei mir in den beiden Konfigurationsdateien unter /work/config keine Maskierung zu finden ist.
Ich verwende übrigens die neueste Version, die es am 04.05. zu downloaden gab.
|
|
  |
 |
DSB
Developer


Age: 41
Joined: 30 Apr 2004
Posts: 16073
Location: Reichenberg bei Würzburg

|
Posted:
2011-05-10, 22:48 (No subject) |
  |
« stoby89 » wrote: Ich habe die Zeilen mal kurz überflogen und eigentlich müssten diese richtig arbeiten. Ich glaube aber, dass die Funktion evt. nirgends aufgerufen wird, weil bei mir in den beiden Konfigurationsdateien unter /work/config keine Maskierung zu finden ist.
Doch wird sie. In der gleichen Datei sorgt die Funktion WriteCronscript() (ab Zeile 355) dafür, dass die Perl-Konfiguration geschrieben wird.
Das nicht maskiert wird kann ich nicht bestätigen. Ich habe z.B. bei der E-Mail-Empfangsadresse "$\@bla.com" eingegeben und die Konfiguration gespeichert.
Beim Speichern wird die Maskierung dieses Wertes in Zeile 463 erledigt:
$cronscript.='$cronmailto="' . escape_specialchars($config['email_recipient']) . '";' . $nl;
Folgerichtig findet sich danach in der mysqldumper.conf.php korrekt maskiert:
$cronmailto="\$\@bla.com";
Ich kann das nicht reprodzieren.
Quote: die es am 04.05. zu downloaden gab
???
Die letzte veröffentlichte Version 1.24.4 wurde am 24.01.2011 veröffentlicht. Von welcher Version sprichst Du?
_________________ Gruß / Greetings, DSB
Teigwaren heißen Teigwaren, weil sie Teig waren.
Diejenigen, die lautstark darüber diskutieren, warum es nicht geht, mögen bitte jene nicht stören, die es gerade tun.
|
|
    |
 |
stoby89
knows MySQLDumper

Joined: 04 May 2011
Posts: 3

|
Posted:
2011-05-12, 10:27 (No subject) |
  |
Hallo,
« DSB » wrote: Das nicht maskiert wird kann ich nicht bestätigen. Ich habe z.B. bei der E-Mail-Empfangsadresse "$\@bla.com" eingegeben und die Konfiguration gespeichert.
Beim Speichern wird die Maskierung dieses Wertes in Zeile 463 erledigt:
$cronscript.='$cronmailto="' . escape_specialchars($config['email_recipient']) . '";' . $nl;
Folgerichtig findet sich danach in der mysqldumper.conf.php korrekt maskiert:
$cronmailto="\$\@bla.com";
Ich kann das nicht reprodzieren.
Damit ist es doch reproduziert, denn genau DAS ist das Problem. Wenn man meinen Beitrag aufmerksam gelesen hätte, dann stellt man fest, dass ich nicht von einem E-Mail Empfänger sprach, sondern vom Datenbankpasswort und genau dort führt das zu einem Fehler. Wenn das Passwort mit Backslashes in doppelten Anführungszeichen in der Konfiguration steht, dann wird es anschließend nicht als Backslash interpretiert, sondern als Steuerzeichen.
« DSB » wrote: Die letzte veröffentlichte Version 1.24.4 wurde am 24.01.2011 veröffentlicht. Von welcher Version sprichst Du?
Ich verwende die Version 1.24.4 und fande, dass meine Formulierung absolut präzise war.
Nichts desto trotz habe ich den Fehler nun mit einer zweiten Installation reproduzieren können.
Damit nichts wieder so kleinkarrierte Fragen auftauchen, nun alles im Detail:
- Neuen Mysqlbenutzer erstellt mit folgendem Passwort %5\+nvuzi
- MySQLDumper Installation kopiert
- mit altem Benutzer Perldump und PHPdump erfolgreich gemacht
- Neue Benutzerdaten über die Weboberfläche eingetragen
- PHP Dump funktioniert einwandfrei
- Perl Dump schlägt wegen falscher Zugangsdaten fehl
- /work/config/mysqldumper.conf.php inspiziert und siehe da, wie bereits im ersten Post geschrieben, genau der gleiche Fehler: der Backslash wurde NICHT maskiert und führt zu einem Fehler.
Die Lösung zu dem Problem ist eigentlich einfach: In der functions.php ab Zeile 450 müssen dort, wo die Konfiguration für das Perlscript erstellt wird, alle doppelten Anführungszeichen durch einfach ersetzt werden.
$cronscript.='$dbpass="' . escape_specialchars($config['dbpass']) . '";' . $nl;
muss ersetzt werden durch
$cronscript.='$dbpass=\'' . escape_specialchars($config['dbpass']) . '\';' . $nl;
Damit funktioniert die Konfigerstellung für Perl und der Backslash wird als Backslash interpretiert, da in einfachen Anführungszeichen keine Steuerzeichen interpretiert werden.
Ich hoffe, dass mein Beitrag jetzt endlich mal durchgelesen und nicht nur überflogen wird. Es ist schon ziemlich frustrierend, dass wenn man Sinnvolles beitragen will ständig abgewehrt wird im Sinne von "es funktioniert doch alles" anstatt genau die Dinge zu testen die geschildert worden sind.
Grüße
|
|
  |
 |
|
|
CrackerTracker © 2004 - 2012 CBACK.de
Powered by Orion based on phpBB
© 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
All times are GMT + 2 Hours
phpBB SEO
|