Seite 5 von 6

Re: Zur Info

Verfasst: Di 1. Jul 2014, 14:20
von shadowcat
Deine Fehlermeldung kommt nur, weil Du noch das Debug-Script benutzt. Bau das alte wieder ein dann ist die weg.

Re: Zur Info

Verfasst: Di 1. Jul 2014, 15:04
von Morpheus
Mmmhhhh, stimmt ja :oops: :oops: :oops: :oops: :oops:

läuft jetzt :D

Re: Zur Info

Verfasst: Di 1. Jul 2014, 15:05
von shadowcat
Supi. Dann schreib ich das mal ins Wiki. :D

Re: Zur Info

Verfasst: Di 1. Jul 2014, 15:12
von shadowcat

Re: Zur Info

Verfasst: Fr 12. Sep 2014, 10:36
von shadowcat
Jetzt kann ich doch tatsächlich den CSRF-Fehler auf einem 1und1-Server reproduzieren! Vielleicht komm ich jetzt endlich dahinter.

Re: Zur Info

Verfasst: Fr 12. Sep 2014, 13:27
von Morpheus
Da bin ich ja mal erleichtert ;)

Re: Zur Info

Verfasst: Fr 12. Sep 2014, 13:27
von shadowcat
Also ich nicht. :D

Re: Zur Info

Verfasst: Di 16. Sep 2014, 10:03
von Morpheus

Code: Alles auswählen

Also ich nicht. :D
Denk ich mir :roll:

Hast Du denn schon eine :idea:

Re: Zur Info

Verfasst: Di 16. Sep 2014, 10:06
von shadowcat
Hatte noch keine Zeit dafür.

Re: Zur Info

Verfasst: Di 21. Okt 2014, 16:37
von shadowcat
Ich vermute, die NAS und 1&1 haben das gleiche Problem. Folgender Hintergrund: BC prüft bei allen Anfragen, ob sich der aufgerufene Pfad innerhalb des Backends befindet. Wenn ja, werden bestimmte Aktionen durchgeführt. Die Überprüfung erfolgt gegen den vollständigen Pfad.

Bei 1&1 ergibt sich als vollständiger Pfad aus $_SERVER['SCRIPT_FILENAME'] etwas wie -> /kunden/homepages/XX/mehrhier/...
Der Pfad, mit dem verglichen wird, stammt aus der Konstanten CAT_ADMIN_PATH, welche wiederum aus CAT_PATH und CAT_BACKEND_PATH zusammengesetzt ist. Beide findet man in der config.php. Bei 1&1 ergibt das nunmehr -> /homepages/XX/mehrhier/...
Es fehlt also das /kunden/ am Anfang.

Wie kommt es zu dem Unterschied? Nun, $_SERVER ist eine Servervariable, die der Webserver setzt. CAT_PATH wird aus der PHP-Funktion dirname() heraus gesetzt, verwendet also Dateisystemfunktionen. Das sind zwei unterschiedliche Quellen, die daher auch unterschiedliche Ergebnisse liefern können.

In der Folge erkennt BC nun nicht, daß sich der Pfad im Backend-Bereich befindet, und kann die notwendigen Aktionen nicht ausführen. Nun denkt man sich, na dann hole ich das eben in dem AJAX-Script nach, also dort, wo der CSRF-Fehler auftaucht. Das geht aber nicht. Hat was mit Henne-Ei zu tun. ;)

UND WAS NUN?

Die Lösung besteht darin, den Pfad, der in $_SERVER steht, in die config.php zu schreiben.

SUCHEN

Code: Alles auswählen

define('CAT_PATH', dirname(__FILE__));
ERSETZEN DURCH

Code: Alles auswählen

define('CAT_PATH', '/kunden/homepages/xx/whatever/...');
Bitte ausprobieren und Ergebnis mitteilen. :)