Fortschritt - Dezember 2017

Antworten
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Fortschritt - Dezember 2017

Beitrag von shadowcat »

Seit der letzten Info gab es einige wichtige Änderungen, die aber zumeist auf der Oberfläche nicht zu sehen sind.

Sessions

In BC2 werden alle Sessiondaten verschlüsselt in der Datenbank gespeichert. Selbst wenn also jemand Zugriff auf die Datenbank hat, kann er die Sessiondaten nicht einsehen. Zudem speichern wir in der Session nur die UserID, sonst nichts, also keine Rechte oder ähnliches. (Natürlich ist es legitim, weitere Daten in der Session zu speichern, z.B. bei mehrstufigen Formularen, dafür ist sie ja auch verschlüsselt.)
Zudem wird die SessionID bei jedem Zugriff erneuert, so dass eine eventuell "geklaute" SessionID nicht dazu führen kann, dass ein Angreifer die Session übernimmt.

Namespace

Das ist hauptsächlich für Programmierer interessant. Alle unsere Klassen befinden sich jetzt im Namespace \CAT, Helperklassen entsprechend in \CAT\Helper, usw. Das hätte ich von Anfang an so machen sollen, hab's aber irgendwie versäumt. :-?

Erste Tests mit mehreren Sites

Ein Kernfeature der Version 2.x ist die Trennung zwischen Engine und Site, also quasi die Auslagerung des (sowieso nicht mehr existenten) "pages"-Verzeichnisses sowie des Verzeichnisses "media". Man pflegt also _eine_ Installation und betreibt damit mehrere, voneinander unabhängige Webauftritte. Bisher hatte ich nur eine Site in meiner Entwicklungsumgebung, jetzt teste ich mit zwei. Daraus haben sich bereits einige Änderungen ergeben.

Bootstrap 4

Das betrifft hauptsächlich das Backend-Theme und das dort verwendete jQuery Plugin "Datatables". Da Bootstrap 3 nicht mehr weiter gepflegt wird, war es wichtig, frühzeitig umzusteigen, da wir ja nicht ein brandneues CMS mit veraltetem Zeug ausliefern wollen.

jQuery und "sonstiges JavaScript"

Bisher lag der Fokus nur auf jQuery und Plugins, jetzt gibt es ein Modul für beides sowie ein Admin-Tool für beides. Man kann also künftig "reines" JavaScript (auch als "Vanilla" bezeichnet) genauso bequem verwalten wie jQuery Plugins. Diese "Addons" werden in einer eigenen Tabelle in der Datenbank analog zu dem CMS-Addons hinterlegt.

Komplette Überarbeitung des Asset-Managements

Assets sind hauptsächlich JavaScripts, CSS-Dateien und Bilder, die zum Core bzw. zu Modulen gehören. (Im Gegensatz zum Inhalt des media-Verzeichnisses, welches Site-Inhalte beinhaltet.) Hier gibt es einige Herausforderungen:
  • Das Engine-Verzeichnis soll künftig nach Möglichkeit außerhalb des vom Web aus zugänglichen Bereichs liegen. Somit gibt es auch keine URLs, mit denen sich z.B. Images aus Modulverzeichnissen aufrufen lassen.
  • Wir sammeln JavaScripts und CSS von verschiedenen Stellen ein, angefangen von festgelegten Verzeichnissen mit Namenskonvention (frontend.css etc.) bis zu headers.inc.php und footers.inc.php für komplexere Anforderungen.
  • Die eingesammelten Sourcen sollten möglichst komprimiert an den Browser ausgeliefert werden. Hierbei ist aber die Reihenfolge zu beachten (z.B. jQuery immer vor Plugins), Bedingungen müssen berücksichtigt werden (z.B. <!-- if... ), usw.
Hierfür gibt es jetzt zwei eigene Klassen, die gesamte Logik wurde also aus dem Page-Helper extrahiert und erneuert.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Benutzeravatar
creativecat
Beiträge: 1430
Registriert: Mi 6. Feb 2013, 12:41
Kontaktdaten:

Re: Fortschritt - Dezember 2017

Beitrag von creativecat »

Erst mal danke, für die Informationsupdates! Damit sieht man, dass doch einiges passiert!
shadowcat hat geschrieben:
Do 14. Dez 2017, 12:47
Zudem wird die SessionID bei jedem Zugriff erneuert, so dass eine eventuell "geklaute" SessionID nicht dazu führen kann, dass ein Angreifer die Session übernimmt.
Kurze Frage dazu: Ist damit das Arbeiten in mehreren Tabs noch möglich (auch wenn das sicherheitstechnisch immer bissl problematisch ist)? Nicht das in Tab1 die SessionID durch einen Zugriff geändert wird und dann die SessionID in Tab2 veraltet ist.
Benutzeravatar
shadowcat
Administrator
Beiträge: 5283
Registriert: Di 5. Feb 2013, 10:36
Kontaktdaten:

Re: Fortschritt - Dezember 2017

Beitrag von shadowcat »

Das eine schließt das andere aus.

Edit: Hab's mal getestet, scheint zu funktionieren, aber ich würde das gern erst noch genauer untersuchen.
My software never has bugs, it just develops random features.
If it’s not broken, keep fixing it until it is
Antworten