HTTPS-Umstellung: Sicherheitswarnung beheben
Quell-ID: GitHub Discussion #38
Use Case
Nach der Umstellung einer Website auf HTTPS zeigt das REDAXO-Backend Sicherheitswarnungen an, dass bestimmte Ordner nicht sicher sind.
Verwendete AddOns
- REDAXO Core
- YRewrite
Problemstellung
Nach der Aktivierung von HTTPS erscheint im Backend eine Meldung, dass die Ordner data, core, cache und bin nicht sicher sind.
Lösung
Wenn YRewrite installiert ist, müssen folgende Schritte durchgeführt werden:
1. .htaccess neu setzen
- Im Backend zu “YRewrite” > “Setup” navigieren
- Die Option “.htaccess-Datei neu setzen” ausführen
2. Domain-Einstellungen prüfen
In den YRewrite-Einstellungen sicherstellen, dass die HTTPS-Domain korrekt angelegt ist:
- “YRewrite” > “Domains”
- Domain-Eintrag bearbeiten
- URL mit
https://eintragen
3. Systemeinstellungen aktualisieren
- “System” > “Einstellungen”
- Server-URL auf HTTPS aktualisieren
Checkliste für HTTPS-Umstellung
- [ ] SSL-Zertifikat auf dem Server installiert
- [ ] YRewrite .htaccess neu generieren
- [ ] Domain in YRewrite auf HTTPS umstellen
- [ ] System-URL auf HTTPS ändern
- [ ] Cache leeren
- [ ] Mixed-Content-Warnungen prüfen
- [ ] Alle internen Links auf HTTPS prüfen
Besserer Ansatz: HTTPS erzwingen
In der .htaccess (manuell)
# HTTPS erzwingen
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Per PHP (in boot.php)
<?php
// In boot.php des project-AddOns
if (rex::isFrontend() && !rex_request::isHttps()) {
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], true, 301);
exit;
}
Sichere Cookies erzwingen
<?php
// In boot.php
if (rex::isBackend()) {
ini_set('session.cookie_secure', '1');
ini_set('session.cookie_httponly', '1');
ini_set('session.cookie_samesite', 'Strict');
}
Content Security Policy für HTTPS
<?php
// In boot.php für das Frontend
if (rex::isFrontend()) {
header("Content-Security-Policy: upgrade-insecure-requests");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
}
Mixed Content beheben
Nach der HTTPS-Umstellung können “Mixed Content”-Warnungen auftreten, wenn HTTP-Ressourcen geladen werden.
Häufige Ursachen
- Medienpool: Alte URLs in der Datenbank
- Module: Hardcoded HTTP-URLs
- Externe Ressourcen: JavaScript/CSS von HTTP-Quellen
Lösung für Medienpool-URLs
<?php
// Einmal-Script zum Aktualisieren von HTTP-URLs in Slices
$sql = rex_sql::factory();
$sql->setQuery('
UPDATE ' . rex::getTable('article_slice') . '
SET value1 = REPLACE(value1, "http://example.com", "https://example.com"),
value2 = REPLACE(value2, "http://example.com", "https://example.com"),
value3 = REPLACE(value3, "http://example.com", "https://example.com")
');
Prüfen auf Mixed Content
// Im Browser-Console ausführen
document.querySelectorAll('*[src^="http://"], *[href^="http://"]').forEach(el => {
console.log('Mixed content:', el.tagName, el.src || el.href);
});
Sicherheitsordner prüfen
Die Warnung bezüglich der Ordner bedeutet, dass diese von außen erreichbar sein könnten. Die .htaccess sollte folgende Regeln enthalten:
# Zugriff auf sensible Verzeichnisse blockieren
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Blockiere direkten Zugriff auf redaxo-Ordner
RewriteRule ^redaxo/data - [F]
RewriteRule ^redaxo/cache - [F]
RewriteRule ^redaxo/bin - [F]
</IfModule>