From fea89942dace027d5fdc8c4bb43a31faaa78bc57 Mon Sep 17 00:00:00 2001 From: Fabian Schieder Date: Thu, 2 Apr 2026 00:26:08 +0000 Subject: [PATCH] README.md aktualisiert --- README.md | 177 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 91 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index e1db15c..4a8beef 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ ## Kurzüberblick -Geizkragen ist eine webbasierte Anwendung zur Produktsuche, zum Preisvergleich und zur Verwaltung von Benutzerinteraktionen (z. B. Wunschliste, Konto). -Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP und relationaler Datenbank. +Geizkragen ist eine webbasierte Anwendung zur Produktsuche und zum Preisvergleich. Nutzer können Produkte durchsuchen, vergleichen und in einer persönlichen Wunschliste verwalten. +Das Projekt dient als technische Demonstration einer klassischen PHP-basierten Webanwendung mit Datenbankanbindung. --- @@ -14,11 +14,11 @@ Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP u * Wunschliste (benutzergebunden) * Benutzerregistrierung und Login * Benutzerkonto-Verwaltung -* Adminbereich zur Benutzerverwaltung +* Administrationsbereich zur Benutzerverwaltung * Hinzufügen neuer Produkte * Produktdetailseiten -* Statistikfunktionen (JSON-basiert) -* Einfaches Empfehlungssystem +* Einfache statistische Auswertungen +* Grundlegendes Empfehlungssystem --- @@ -27,28 +27,28 @@ Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP u ```bash geizkragen/ │ -├── index.php # Startseite -├── productpage.php # Produktdetails -├── compare.php # Produktvergleich -├── wunschliste.php # Wunschliste -├── login.php # Login -├── register.php # Registrierung -├── account.php # Benutzerkonto -├── admin_users.php # Admin-Panel +├── index.php +├── productpage.php +├── compare.php +├── wunschliste.php +├── login.php +├── register.php +├── account.php +├── admin_users.php │ ├── api/ -│ └── search_products.php # Produktsuche API +│ └── search_products.php │ ├── assets/ -│ ├── css/ # Stylesheets -│ ├── images/ # Bilder / DB-Design -│ └── icons/ # Icons +│ ├── css/ +│ ├── images/ +│ └── icons/ │ -├── header.php # Header-Komponente -├── footer.php # Footer-Komponente -├── style.css # Globales Styling -├── stats.json # Statistiken -└── .htaccess # Serverkonfiguration +├── header.php +├── footer.php +├── style.css +├── stats.json +└── .htaccess ``` --- @@ -70,8 +70,8 @@ git clone cd geizkragen ``` -Alternativ: -Projekt entpacken nach: +Oder manuell: +Projekt in das Webserver-Verzeichnis kopieren, z. B.: ``` C:\xampp\htdocs\geizkragen @@ -82,15 +82,14 @@ C:\xampp\htdocs\geizkragen ### Datenbankeinrichtung 1. Neue Datenbank erstellen -2. Tabellen entsprechend dem vorhandenen Schema anlegen +2. Tabellen entsprechend dem Schema anlegen 3. Zugangsdaten in den PHP-Dateien konfigurieren --- ### Start -* Webserver starten (z. B. Apache über XAMPP) -* Anwendung aufrufen: +Webserver starten und im Browser öffnen: ``` http://localhost/geizkragen @@ -108,7 +107,7 @@ GET /api/search_products.php?q=Suchbegriff Antwort: -* JSON-Format mit passenden Produkten +* JSON mit passenden Produkten --- @@ -116,56 +115,59 @@ Antwort: ### Backend -* PHP (serverseitige Verarbeitung) -* Teilweise REST-ähnliche API-Struktur +* PHP +* Serverseitige Verarbeitung +* Teilweise API-Struktur ### Frontend * HTML5 * CSS -* Serverseitiges Rendering (kein SPA) +* Klassisches serverseitiges Rendering ### Datenhaltung -* Relationale Datenbank (MySQL/MariaDB) -* Ergänzend JSON-Dateien (z. B. Statistiken) +* MySQL / MariaDB +* Ergänzend JSON (Statistiken) --- -## Zentrale Module +## Sicherheit und Hinweis zur öffentlichen Nutzung -| Modul | Funktion | -| --------------------- | -------------------------- | -| compare.php | Vergleich von Produkten | -| productAdder.php | Hinzufügen neuer Produkte | -| wunschliste.php | Verwaltung der Wunschliste | -| admin_users.php | Benutzerverwaltung | -| ad_recommendation.php | Empfehlungssystem | +Dieses Repository ist öffentlich zugänglich. +Der aktuelle Stand ist als Lern- bzw. Entwicklungsprojekt zu verstehen und **nicht für den produktiven Einsatz im Internet vorgesehen**. + +Bekannte Einschränkungen: + +* Sicherheitsmechanismen sind nicht vollständig implementiert +* Authentifizierung und Session-Handling sollten überprüft werden +* Eingabevalidierung und Schutz gegen SQL-Injection sind teilweise unzureichend +* Keine Garantie für Datenschutz oder Datensicherheit + +**Empfehlung:** +Vor einem produktiven Einsatz müssen grundlegende Sicherheitsmaßnahmen implementiert werden. --- -## Sicherheit (Bewertung und Empfehlungen) - -Aktueller Stand deutet auf grundlegende Implementierung hin, jedoch mit Verbesserungspotenzial. - -Empfohlene Maßnahmen: +## Empfohlene Sicherheitsmaßnahmen * Verwendung von Prepared Statements (PDO/MySQLi) -* Passwort-Hashing mit `password_hash()` und `password_verify()` -* Validierung und Sanitizing sämtlicher Eingaben -* CSRF-Schutz bei Formularen -* Session-Härtung (z. B. Regeneration von Session-IDs) +* Passwort-Hashing mit `password_hash()` +* CSRF-Schutz für Formulare +* Strikte Validierung und Sanitizing aller Eingaben +* Sichere Session-Verwaltung (Session-Regeneration) +* Fehlerausgaben im Produktivbetrieb deaktivieren --- ## Erweiterungsmöglichkeiten -* Einführung eines MVC-Patterns zur besseren Trennung von Logik und Darstellung -* Ausbau der API zu einer vollständigen REST-Schnittstelle -* Integration eines modernen Frontends (z. B. Vue oder React) -* Verbesserung der UI/UX (Responsive Design) -* Automatisierte Tests (Unit/Integration) -* Erweiterung des Empfehlungssystems (z. B. Scoring oder ML-basierte Ansätze) +* Einführung eines MVC-Patterns +* Trennung von Backend und Frontend (API-first) +* Nutzung eines modernen Frontend-Frameworks +* Verbesserung der Benutzeroberfläche (Responsive Design) +* Erweiterung des Empfehlungssystems +* Automatisierte Tests --- @@ -173,36 +175,40 @@ Empfohlene Maßnahmen: Empfohlen: -* IDE: PhpStorm oder Visual Studio Code -* Datenbank-Tools: MySQL Workbench -* Lokaler Server: XAMPP oder vergleichbar +* PhpStorm oder Visual Studio Code +* MySQL Workbench +* XAMPP oder vergleichbare lokale Serverumgebung --- ## Lizenz Derzeit ist keine Lizenz definiert. -Empfehlung: Verwendung einer MIT-Lizenz oder vergleichbarer Open-Source-Lizenz. +Ohne Lizenz ist die Nutzung, Veränderung und Weitergabe rechtlich eingeschränkt. + +Empfehlung: +Eine Open-Source-Lizenz wie MIT oder Apache 2.0 hinzufügen. --- ## Autor Fabian Schieder +Paul Eisenbock --- ## Fachliche Einschätzung -Das Projekt stellt eine solide Grundlage für eine klassische datenbankgestützte Webanwendung dar. -Architektonisch handelt es sich um eine typische serverseitig gerenderte PHP-Anwendung ohne klare Trennung der Schichten. +Das Projekt ist ein solides Beispiel für eine klassische PHP-Webanwendung mit Datenbankanbindung. +Für Lernzwecke ist die Struktur sinnvoll, jedoch fehlen klare architektonische Trennungen und sicherheitsrelevante Mechanismen. -Aus technischer Sicht sind folgende Punkte besonders relevant für die Weiterentwicklung: +Für eine Weiterentwicklung sind insbesondere folgende Punkte entscheidend: -* Entkopplung von Präsentation und Logik (z. B. MVC) -* Verbesserung der Sicherheit (insbesondere Datenbankzugriffe und Authentifizierung) -* Modularisierung und Wartbarkeit des Codes -* Optional: Übergang zu API-first-Architektur +* Strukturierung (MVC oder ähnliche Muster) +* Absicherung der Datenbankzugriffe +* Saubere Trennung von Logik und Darstellung +* Skalierbarkeit durch API-basierte Architektur --- @@ -210,36 +216,35 @@ Aus technischer Sicht sind folgende Punkte besonders relevant für die Weiterent ### Häufige Probleme -* Unsichere SQL-Queries (SQL-Injection) -* Fehlendes oder falsches Passwort-Hashing -* Vermischung von HTML und PHP (erschwerte Wartung) -* Fehlende Eingabevalidierung +* SQL-Injection durch direkte Queries +* Fehlendes Passwort-Hashing +* Vermischung von PHP und HTML * Unsichere Session-Verwaltung +* Fehlende Eingabevalidierung ### Best Practices -* Prepared Statements konsequent einsetzen -* Trennung von Logik und Darstellung -* Verwendung von zentralen Konfigurationsdateien -* Strukturierte Fehlerbehandlung -* Logging implementieren +* Prepared Statements konsequent verwenden +* Zentrale Konfigurationsdateien nutzen +* Logging und Fehlerhandling implementieren +* Code modularisieren +* Sicherheitskonzepte früh integrieren --- -## Typischer Ablauf (Use Case) +## Typischer Ablauf -1. Benutzer sucht ein Produkt (API-Aufruf) -2. Anzeige der Ergebnisse auf der Startseite -3. Auswahl eines Produkts (Detailseite) -4. Optionaler Vergleich mit anderen Produkten -5. Speicherung in der Wunschliste +1. Benutzer sucht ein Produkt +2. Ergebnisse werden angezeigt +3. Produktdetailseite wird geöffnet +4. Optional: Vergleich oder Speicherung in Wunschliste --- ## Zusammenfassung -* PHP-basierte Webanwendung für Produktsuche und Preisvergleich +* PHP-basierte Preisvergleichsplattform * Klassische serverseitige Architektur -* Enthält Benutzerverwaltung, Vergleich und API -* Erweiterbar in Richtung moderne Webarchitektur -* Sicherheit und Struktur sollten verbessert werden +* Öffentliche Repository mit Lerncharakter +* Sicherheit derzeit nicht ausreichend für Produktion +* Gute Basis für Erweiterung und Refactoring