You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,24 @@
1
+
1
2
# Changelog
2
3
3
4
Dieses Changelog wird ab Version `1.0.0` neu geführt.
4
5
6
+
## 1.0.0-beta.14 (08. Mai 2026)
7
+
8
+
**Neu:**
9
+
- Legacy Meta-Integration: Meta-/SEO-Tags können jetzt zentral im Backend gepflegt werden (Seite "Legacy Meta Integration").
10
+
- Sichere Validierung: Nur reine Meta-Tags und statisches HTML erlaubt, PHP/JS/Event-Handler werden blockiert.
11
+
- Frontend-Ausgabe: Die gepflegten Meta-Tags werden im HTML-Head nach dem letzten <meta> Tag (Fallback: vor </head>) ausgegeben – nur in aktivierten Templates.
12
+
- Ausgabe erfolgt über OUTPUT_FILTER Extension Point, Template-Check wie bei JSON-LD.
13
+
- README.md um Abschnitt "Legacy Meta-Integration" erweitert.
14
+
- Versionsnummer auf 1.0.0-beta.14 erhöht.
15
+
16
+
**Technik:**
17
+
- Keine bestehenden Funktionen oder Ausgaben des AddOns beeinträchtigt.
18
+
19
+
**Hinweis:**
20
+
- Die Funktion richtet sich an Entwickler/Redakteure, die alte SEO-/Meta-Tags übernehmen oder spezielle Meta-Informationen ergänzen möchten.
Mit der Funktion **Legacy Meta-Integration** können alte oder zusätzliche Meta-/SEO-Tags zentral im Backend gepflegt werden. Diese werden – zusätzlich zur JSON-LD-Ausgabe – im HTML-Head nach dem letzten vorhandenen <meta> Tag ausgegeben (nur in den unter Einstellungen aktivierten Templates).
125
+
126
+
**Sicherheit:**
127
+
- Es sind ausschließlich reine Meta-Tags und statisches HTML erlaubt. PHP, JavaScript, Event-Handler und unsichere Tags werden automatisch blockiert.
128
+
- Die Eingabe erfolgt über ein eigenes Backend-Formular mit Validierung und CSRF-Schutz.
129
+
130
+
**Funktionsweise:**
131
+
- Die gepflegten Meta-Tags werden im Frontend-Head nach dem letzten <meta> Tag eingefügt (Fallback: vor </head>).
132
+
- Die Ausgabe erfolgt nur in Templates, die in den AddOn-Einstellungen aktiviert wurden.
133
+
- Die Daten werden zentral in der REDAXO-Konfiguration gespeichert.
134
+
135
+
**Typische Anwendungsfälle:**
136
+
- Migration alter SEO-/Meta-Tags aus früheren Systemen
137
+
- Ergänzung spezieller Meta-Informationen, die nicht über REDAXO-Metainfo gepflegt werden
138
+
139
+
**Hinweis:**
140
+
Die Funktion richtet sich an Entwickler und Redakteure, die volle Kontrolle über die Meta-Ausgabe benötigen, ohne die Templates direkt anpassen zu müssen.
// Prüfung auf "bösen" Code, aber Meta-Tags sind immer erlaubt
22
+
$metaTagPattern = '/^\s*<meta\s/i';
23
+
$lines = preg_split('/\r?\n/', $legacyMeta);
24
+
$badFound = false;
25
+
foreach ($linesas$line) {
26
+
$trimmed = trim($line);
27
+
if ($trimmed === '' || preg_match($metaTagPattern, $trimmed)) {
28
+
continue; // Meta-Tags und leere Zeilen immer erlauben
29
+
}
30
+
$badPatterns = [
31
+
'/<\s*\?(php)?/i', // PHP-Tags
32
+
'/<\s*script/i', // JS-Script-Tag
33
+
'/javascript:/i', // JS-URI
34
+
'/(<|\s)on[a-z]+\s*=/i', // Event-Handler wie onclick, onload (nur als Attribut)
35
+
'/<\s*iframe/i', // iframe
36
+
'/<\s*object/i', // object
37
+
'/<\s*embed/i', // embed
38
+
'/<\s*applet/i', // applet
39
+
];
40
+
foreach ($badPatternsas$pattern) {
41
+
if (preg_match($pattern, $trimmed)) {
42
+
$badFound = true;
43
+
break2;
44
+
}
45
+
}
46
+
}
47
+
if ($badFound) {
48
+
echo rex_view::error('Dein Eintrag enthält unerlaubten Code (PHP, JavaScript, Event-Handler oder unsichere HTML-Tags). Bitte nur reine Meta-Tags oder statisches HTML verwenden!');
<textarea name="legacy_meta" class="form-control" rows="18" style="font-family:monospace; min-height:350px;" placeholder="Hier können alte Meta-/SEO-Daten eingefügt werden..."><?=htmlspecialchars($legacyMeta) ?></textarea>
73
+
</div>
74
+
</div>
75
+
</div>
76
+
<div class="col-md-5">
77
+
<div class="panel panel-info">
78
+
<header class="panel-heading">
79
+
<h1 class="panel-title">Info & Hinweise</h1>
80
+
</header>
81
+
<div class="panel-body">
82
+
<p>
83
+
<strong>Legacy Meta-Integration:</strong><br>
84
+
Hier kannst du weitere Meta-Informationen eintragen. Diese werden in den zugewiesenen Templates für die JSON-LD-Ausgabe nach dem letzten im Quellcode gefundenen Meta-Tag ausgegeben.<br><br>
85
+
An dieser Stelle ist keine Verwendung von PHP oder JavaScript möglich, da die Daten direkt in den HTML-Head ausgegeben werden. Es können also nur reine HTML-Meta-Tags oder andere statische HTML-Elemente verwendet werden.<br><br>
86
+
<hr>
87
+
<em>Hinweis:</em> Diese Funktion ist ein Hilfswerkzeug für Entwickler und Redakteure, die alte SEO-/Meta-Daten übernehmen möchten.
0 commit comments