bg_image
header

Contentful

Contentful ist ein sogenanntes Headless Content Management System (Headless CMS). Es ermöglicht Unternehmen, Inhalte (Content) zentral zu verwalten und flexibel über APIs an verschiedene Ausgabekanäle auszuliefern – z. B. Websites, Apps oder digitale Displays.

Was bedeutet „Headless“?

Traditionelle CMS (wie WordPress) verwalten Inhalte und präsentieren sie gleichzeitig auf einer fest verknüpften Website. Bei einem Headless CMS ist die „Präsentationsschicht“ (Frontend) vom „Content-Management“ (Backend) getrennt. Man hat also nur den „Kopf“ (Frontend) abgetrennt – daher der Begriff „headless“.


Hauptmerkmale von Contentful:

  • API-first: Inhalte werden über REST oder GraphQL APIs bereitgestellt.

  • Flexibles Content Modeling: Man definiert eigene Content-Typen (z. B. Blogartikel, Produkte, Testimonials) mit frei wählbaren Feldern.

  • Mehrsprachigkeit: Gute Unterstützung für mehrsprachige Inhalte.

  • Cloud-basiert: Keine eigene Server-Infrastruktur nötig.

  • Integration: Lässt sich gut mit Tools wie React, Vue, Next.js, Shopify, SAP, etc. kombinieren.


Für wen ist Contentful interessant?

  • Unternehmen mit mehreren Ausgabekanälen (Website, App, Smartwatch, etc.)

  • Teams, die Frontend und Backend getrennt entwickeln wollen

  • Große Marken mit internationaler Präsenz

  • Entwicklerteams, die ein flexibles und skalierbares CMS suchen

 


Headless CMS

Ein Headless CMS (Content Management System) ist ein Content-Management-System, bei dem das Backend (die Inhalte und ihre Verwaltung) vom Frontend (der Darstellung für die Nutzer) vollständig getrennt ist.

Im Detail:

Klassisches CMS (z. B. WordPress):

  • Backend und Frontend sind gekoppelt.

  • Die Inhalte werden im System erstellt und direkt als HTML über ein fest integriertes Theme angezeigt.

  • Vorteil: Alles aus einer Hand.

  • Nachteil: Eingeschränkte Flexibilität, schwer für Multi-Plattform-Ausgabe (z. B. App + Webseite + Smartwatch).

Headless CMS:

  • Nur Backend.

  • Inhalte werden über eine API (z. B. REST oder GraphQL) bereitgestellt.

  • Das Frontend (z. B. eine React-Webseite, native App, Digital Signage) holt sich die Inhalte dynamisch.

  • Vorteil: Sehr flexibel, geeignet für Multi-Channel-Ausspielung.

  • Nachteil: Frontend muss separat entwickelt werden (mehr Aufwand).

Typische Einsatzszenarien:

  • Webseiten mit modernen JavaScript-Frameworks (z. B. React, Next.js, Vue)

  • Mobile Apps, die denselben Content wie die Website zeigen sollen

  • Omnichannel-Strategien: Website, App, IoT-Geräte, etc.

Beispiele für Headless CMS:

  • Contentful

  • Strapi

  • Sanity

  • Directus

  • Prismic

  • Storyblok (Hybrid-Ansatz mit Visual Editor)

 


Storyblok

 

Storyblok ist ein benutzerfreundliches, headless Content-Management-System (CMS), das Entwicklern und Marketing-Teams hilft, Inhalte schnell und effizient zu erstellen, zu verwalten und zu veröffentlichen. Es bietet eine visuelle Bearbeitungsoberfläche, die es ermöglicht, Inhalte in Echtzeit zu gestalten, und ist flexibel mit verschiedenen Frameworks und Plattformen kompatibel. Durch seine API-first-Architektur können Inhalte auf jeder digitalen Plattform ausgespielt werden, was es ideal für moderne Web- und App-Entwicklung macht.


Shopware

Shopware ist ein modulares E-Commerce-System aus Deutschland, mit dem man Online-Shops erstellen und verwalten kann. Es richtet sich sowohl an kleine Händler als auch an große Unternehmen und zeichnet sich durch seine Flexibilität, Skalierbarkeit und moderne Technologie aus.

Hier ein Überblick:


🔹 Allgemeine Infos:

  • Hersteller: Shopware AG (gegründet 2000 in Deutschland)

  • Technologie: PHP, Symfony-Framework, API-first-Ansatz

  • Aktuelle Version: Shopware 6 (seit 2019)

  • Open Source: Ja, mit kostenpflichtigen Erweiterungen

  • Headless-Ready: Ja, unterstützt Headless-Commerce über APIs


🔹 Funktionen:

  • Produktverwaltung: Varianten, Staffelpreise, Medien, SEO

  • Vertriebskanäle: Webshop, POS, Social Media, Marktplätze

  • Content Management: Integriertes CMS (Shopping Experiences)

  • Zahlung & Versand: Viele Schnittstellen, z. B. PayPal, Klarna

  • Mehrsprachigkeit & Multi-Currency

  • B2B- & B2C-Features

  • App-System & API für Erweiterungen


🔹 Für wen ist Shopware geeignet?

  • Startups (kostenfreie Community Edition)

  • KMU und Mittelstand

  • Enterprise-Kunden mit individuellen Anforderungen

  • Besonders beliebt im deutschsprachigen Raum


🔹 Vorteile:

  • Made in Germany → DSGVO-konform

  • Hohe Individualisierbarkeit

  • Aktives Ökosystem & Community

  • Skalierbar für wachsende Anforderungen

 


Prepared Statements

Ein Prepared Statement (auch vorbereitetes Statement genannt) ist eine Technik in der Programmierung, insbesondere bei der Arbeit mit Datenbanken, um SQL-Abfragen sicherer und effizienter auszuführen.

1. Was passiert bei einem Prepared Statement?

Ein Prepared Statement besteht aus zwei Schritten:

  1. Vorbereitung der SQL-Abfrage mit Platzhaltern
    Beispiel in SQL:

SELECT * FROM users WHERE username = ? AND password = ?
  • (In manchen Sprachen nutzt man auch :username oder andere Platzhalter)

  • Bindung der Parameter und Ausführung
    Die echten Werte werden später „gebunden“, z. B.:

$stmt->bind_param("ss", $username, $password);
$stmt->execute();

2. Vorteile

Sicherer vor SQL-Injection:
Benutzereingaben werden nicht direkt in die SQL eingebaut, sondern separat behandelt.

Schneller bei Wiederholungen:
Die SQL-Abfrage wird vom Datenbankserver einmal geparst und kann mehrfach effizient ausgeführt werden (z. B. bei Schleifen).

$conn = new mysqli("localhost", "user", "pass", "database");
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email); // "s" für string
$email = "beispiel@example.com";
$stmt->execute();
$result = $stmt->get_result();

Kurz gesagt:

Ein Prepared Statement trennt SQL-Logik von Benutzereingaben und schützt so vor Sicherheitslücken wie SQL-Injection. Es ist eine Best Practice beim Umgang mit Datenbanken.


Outer Join

Ein Outer Join ist ein Begriff aus der Datenbankabfrage (meist in SQL) und bezeichnet eine spezielle Art, zwei Tabellen miteinander zu verknüpfen – auch dann, wenn keine passenden Datensätze in einer der Tabellen vorhanden sind.

Arten von Outer Joins:

  1. LEFT OUTER JOIN (oder einfach: LEFT JOIN):
    → Gibt alle Datensätze aus der linken Tabelle zurück, auch wenn es keine passenden Datensätze in der rechten Tabelle gibt.
    → Nicht passende Werte aus der rechten Tabelle werden mit NULL aufgefüllt.

  2. RIGHT OUTER JOIN (oder: RIGHT JOIN):
    → Gibt alle Datensätze aus der rechten Tabelle zurück, auch wenn es keine passenden in der linken gibt.
    → Nicht passende Werte aus der linken Tabelle werden mit NULL ergänzt.

  3. FULL OUTER JOIN:
    → Gibt alle Datensätze aus beiden Tabellen zurück.
    → Wo keine Übereinstimmung vorliegt, wird mit NULL ergänzt.


Beispiel:

Angenommen, du hast zwei Tabellen:

  • Kunden

    Kundennr Name
    1 Anna
    2 Bernd
    3 Clara
  • Bestellungen

    Bestellnr Kundennr Produkt
    101 2 Buch
    102 4 Lampe

LEFT JOIN (Kunden LEFT JOIN Bestellungen ON Kunden.Kundennr = Bestellungen.Kundennr)

Kundennr Name Bestellnr Produkt
1 Anna NULL NULL
2 Bernd 101 Buch
3 Clara NULL NULL

PHP Data Objects - PDO

PDO steht für PHP Data Objects und ist eine Datenbank-Abstraktionsschicht in PHP. Es handelt sich um eine objektorientierte Schnittstelle, mit der du auf verschiedene Datenbanken zugreifen kannst – z. B. MySQL, PostgreSQL, SQLiteohne den Datenbankspezifischen Code stark ändern zu müssen.

Hauptmerkmale von PDO:

Einheitliche API:
Egal ob MySQL, SQLite oder PostgreSQL – du benutzt denselben Code-Stil.

Prepared Statements:
Sicherer Schutz vor SQL-Injektionen durch gebundene Parameter:

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $userId]);

Transaktionen:
PDO unterstützt Transaktionen (wichtig z. B. bei Bankbuchungen).

Fehlerbehandlung per Exception:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Flexibler Datenbankwechsel:
Möchtest du von MySQL auf PostgreSQL wechseln? Meist nur der DSN-String und Treiber müssen geändert werden.

$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$user = 'root';
$pass = '';

try {
    $pdo = new PDO($dsn, $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Verbindung erfolgreich!";
} catch (PDOException $e) {
    echo "Verbindung fehlgeschlagen: " . $e->getMessage();
}

Fazit:

PDO ist der empfohlene Weg, um in modernen PHP-Anwendungen mit Datenbanken zu arbeiten – besonders wegen der Sicherheit und Flexibilität.


Transaction Control Language - TCL

Transaction Control Language (TCL) ist ein Teil der SQL-Sprache, der verwendet wird, um die Kontrolle über Transaktionen in einer Datenbank zu ermöglichen. Eine Transaktion ist eine logische Einheit von Arbeit, die eine oder mehrere SQL-Anweisungen umfasst – oft Insert-, Update- oder Delete-Befehle –, die zusammen ausgeführt werden sollen.

TCL stellt Befehle bereit, um sicherzustellen, dass Transaktionen korrekt abgeschlossen oder im Fehlerfall rückgängig gemacht werden.

Die wichtigsten TCL-Befehle:

Befehl Beschreibung
COMMIT Speichert alle Änderungen der aktuellen Transaktion dauerhaft in der Datenbank.
ROLLBACK Macht alle Änderungen seit dem letzten COMMIT rückgängig.
SAVEPOINT Legt einen Zwischenstand in einer Transaktion fest, zu dem man später zurückkehren kann.
ROLLBACK TO SAVEPOINT Macht alle Änderungen seit einem bestimmten Savepoint rückgängig.
SET TRANSACTION Legt Eigenschaften für eine Transaktion fest (z. B. Isolationsgrad).
BEGIN;

UPDATE konto SET saldo = saldo - 100 WHERE konto_id = 1;
UPDATE konto SET saldo = saldo + 100 WHERE konto_id = 2;

COMMIT;

→ Beide Updates werden gemeinsam abgeschlossen. Wenn ein Fehler auftritt, könnte man ROLLBACK ausführen, um beide Änderungen zu verwerfen.

Wichtig:

TCL-Befehle wirken nur bei Datenbank-Systemen, die Transaktionen unterstützen (z. B. PostgreSQL, Oracle, MySQL mit InnoDB).


Data Control Language - DCL

Data Control Language (DCL) ist ein Teilbereich von SQL, der sich mit der Verwaltung von Zugriffsrechten und Berechtigungen in einer Datenbank beschäftigt. Mit DCL-Befehlen wird gesteuert, wer was in der Datenbank tun darf.

Die wichtigsten DCL-Befehle:

Befehl Beschreibung
GRANT Erteilt einem Benutzer Rechte, z. B. zum Lesen oder Ändern von Daten
REVOKE Entzieht einem Benutzer zuvor erteilte Rechte
GRANT SELECT, INSERT ON Kunden TO Benutzer123;
REVOKE INSERT ON Kunden FROM Benutzer123;

Typische Berechtigungen:

  • SELECT – Daten lesen

  • INSERT – Daten einfügen

  • UPDATE – Daten ändern

  • DELETE – Daten löschen

  • ALL – Alle Rechte

Merkmale:

  • DCL regelt Sicherheit und Zugriffskontrolle in der Datenbank.

  • Sie wird meist vom Datenbankadministrator (DBA) verwendet.

  • Die Rechte können auf Tabellenebene, Spaltenebene oder global vergeben werden.

  • Änderungen durch DCL-Befehle sind oft transaktionsabhängig und benötigen ggf. ein COMMIT.

Abgrenzung zu anderen SQL-Teilmengen:

  • DDL: Datenbankstruktur (z. B. Tabellen erstellen)

  • DML: Dateninhalte (z. B. Daten einfügen oder ändern)

  • TCL: Transaktionen steuern (z. B. COMMIT, ROLLBACK)

  • DCL: Rechte und Zugriffe verwalten


Data Manipulation Language - DML

Die Data Manipulation Language (DML) ist ein Teilbereich der SQL (Structured Query Language), der für das Bearbeiten von Daten in einer Datenbank verwendet wird. Mit DML können Benutzer Daten einfügen, abfragen, ändern und löschen – also genau das, was man im Alltag mit Daten in einer Datenbank machen möchte.

Zu den wichtigsten DML-Befehlen gehören:

Befehl Zweck
SELECT Daten aus einer Tabelle abfragen
INSERT Neue Daten einfügen
UPDATE Bestehende Daten ändern
DELETE Daten löschen

Beispiel:

-- Einfügen
INSERT INTO kunden (name, stadt) VALUES ('Müller', 'Berlin');

-- Abfragen
SELECT * FROM kunden WHERE stadt = 'Berlin';

-- Aktualisieren
UPDATE kunden SET stadt = 'Hamburg' WHERE name = 'Müller';

-- Löschen
DELETE FROM kunden WHERE name = 'Müller';

Wichtig:

  • DML arbeitet mit den Daten innerhalb der Tabellen, nicht mit der Struktur der Tabellen selbst (dafür gibt es die Data Definition Language, DDL).

  • DML-Befehle können oft rückgängig gemacht werden (z. B. durch ROLLBACK), sofern Transaktionen unterstützt werden.

Kurz gesagt: DML ist das Werkzeug, mit dem du Daten in einer Datenbank lebendig hältst – also ständig anpasst, liest und veränderst.


Zufalls-Technologie

Common Weakness Enumeration - CWE


images_cwe.jpg