QR Code Generator
Ein einfacher QR-Code-Generator, der vollständig im Browser läuft. Keine Daten werden an externe Server gesendet.
Dieses Projekt basiert auf dem Code von https://qr.alster.space/. Er wurde um verschiedene praktische Funktionen erweitert.
Features
- Vollständig clientseitig (keine Server-Kommunikation)
- URL-Parameter für alle Einstellungen
- Anpassbare Größen und Farben
- Verschiedene Fehlerkorrektur-Level
- Download-Funktion
- Teilen-Funktion (Link mit aktuellen Einstellungen kopieren)
- Hinweis bei WiFi: Passwort im Link im Klartext
- Responsive Design
- WiFi QR-Code Unterstützung mit eigener UI
- Dynamische Klartext-Anzeige
- Automatische QR-Code-Generierung
- Sicher gegen XSS (Content Security Policy, validierte Eingaben, kein Inline-JS)
Docker Setup
Mit Docker Compose (empfohlen)
# Container bauen und starten
docker-compose up -d
# Container stoppen
docker-compose down
Docker build/run
# Image bauen
docker build -t qr-generator .
# Container starten
docker run -d -p 8080:80 --name qr-generator qr-generator
# Container stoppen
docker stop qr-generator
docker rm qr-generator
Verwendung
Nach dem Start ist die Anwendung unter http://localhost:8080
erreichbar.
Normale QR-Codes
Geben Sie einfach Text oder URLs in das erste Eingabefeld ein. Der QR-Code wird automatisch generiert.
WiFi QR-Codes
Die App bietet spezielle Eingabefelder für WiFi-Daten:
- WiFi SSID: Geben Sie den Namen Ihres WLAN-Netzwerks ein
- WiFi Password: Geben Sie das WLAN-Passwort ein
- Automatische Generierung: Der QR-Code wird im korrekten WiFi-Format erstellt
- Klartext-Anzeige: Das Textfeld zeigt den generierten WiFi-Code an
Verschlüsselung: Fest eingestellt auf WPA/WPA2
Hidden Network: Standardmäßig auf false (nicht versteckt)
URL-Parameter
Die Anwendung unterstützt folgende URL-Parameter:
text
- Text oder URL für den QR-Codessid
- WiFi SSIDpassword
- WiFi Passwortsize
- Größe (128, 256, 512, 1024)errorCorrection
- Fehlerkorrektur (L, M, Q, H)foreground
- Vordergrundfarbe (Hex-Code)background
- Hintergrundfarbe (Hex-Code)
Beispiele
Normale QR-Codes:
http://localhost:8080/?text=Hello%20World
http://localhost:8080/?text=Test&size=512&errorCorrection=H
http://localhost:8080/?text=Colored&foreground=%23ff0000&background=%23ffff00
WiFi QR-Codes:
http://localhost:8080/?ssid=MeinWLAN&password=MeinPasswort123
http://localhost:8080/?ssid=OffenesWLAN
Achtung: Das WLAN-Passwort ist im Link im Klartext sichtbar!
WiFi QR-Code Format
Die App generiert automatisch QR-Codes im Standard-WiFi-Format:
WPA/WPA2 Netzwerk:
WIFI:S:<SSID>;T:WPA;P:<Passwort>;;
Offenes Netzwerk (ohne Passwort):
WIFI:S:<SSID>;T:nopass;;
Verwendung:
- Füllen Sie die WiFi-Felder aus
- Der QR-Code wird automatisch generiert
- Das Textfeld zeigt den generierten Code an
- Scannen Sie ihn mit einem Smartphone
Das Smartphone erkennt automatisch, dass es sich um WiFi-Daten handelt und bietet an, sich mit dem Netzwerk zu verbinden!
Besondere Funktionen
Dynamische Klartext-Anzeige
- Das Textfeld zeigt immer den aktuellen Inhalt des QR-Codes an
- Bei WiFi-Eingaben wird automatisch das korrekte Format angezeigt
- Bei normaler Texteingabe bleibt der eingegebene Text sichtbar
Synchronisierte Felder
- Beim Leeren des Textfeldes werden auch die WiFi-Felder geleert
- Alle Felder werden synchron verwaltet
Intelligente Validierung
- WiFi-Passwort ohne SSID wird als Fehler angezeigt
- Leere Eingaben werden entsprechend behandelt
Teilen-Funktion
Mit dem Button "Teilen" kann ein Link mit allen aktuellen Einstellungen (inkl. WiFi-Daten) in die Zwischenablage kopiert werden. Dieser Link kann weitergegeben werden und öffnet die App direkt mit den gewählten Einstellungen.
Achtung: Wenn ein WLAN-Passwort eingegeben ist, wird dieses im Link im Klartext übertragen!
Sicherheit & Content Security Policy (CSP)
Die Anwendung ist gegen XSS-Angriffe abgesichert:
- Es wird eine strenge Content Security Policy (CSP) verwendet (
script-src 'self'
), die Inline-Skripte blockiert. - Das gesamte JavaScript ist in die Datei
main.js
ausgelagert und wird als externes Skript eingebunden. - Alle Benutzereingaben und URL-Parameter werden validiert und gefiltert.
- Es wird kein
innerHTML
verwendet, sondern nur sichere Methoden wie.textContent
und.value
.