#!/bin/bash echo "🍎 Safari Formular-Sicherheit beheben" echo "====================================" # 1. .env komplett für HTTPS konfigurieren echo "📝 Konfiguriere .env für HTTPS..." cat > .env << 'EOF' APP_NAME="NeoNail DB" APP_ENV=production APP_KEY=base64:+LTZYPKjkZ+O3iFTgU2sS+9bNvxxvG8Kw8JSEPiG7Rs= APP_DEBUG=false APP_URL=https://neonail.vogt.de.com LOG_CHANNEL=stack LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=sqlite DB_DATABASE=database.sqlite BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DISK=local QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 SESSION_SECURE_COOKIE=true SESSION_SAME_SITE=lax SESSION_HTTP_ONLY=true MEMCACHED_HOST=127.0.0.1 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=mailpit MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_HOST= PUSHER_PORT=443 PUSHER_SCHEME=https PUSHER_APP_CLUSTER=mt1 VITE_APP_NAME="${APP_NAME}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" VITE_PUSHER_HOST="${PUSHER_HOST}" VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" # HTTPS-Konfiguration FORCE_HTTPS=true SECURE_COOKIES=true EOF # 2. Session-Konfiguration für HTTPS echo "🔐 Konfiguriere Session für HTTPS..." cat > config/session.php << 'EOF' env('SESSION_DRIVER', 'file'), 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, 'encrypt' => false, 'files' => storage_path('framework/sessions'), 'connection' => env('SESSION_CONNECTION'), 'table' => 'sessions', 'store' => env('SESSION_STORE'), 'lottery' => [2, 100], 'cookie' => env( 'SESSION_COOKIE', Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ), 'path' => '/', 'domain' => env('SESSION_DOMAIN'), 'secure' => true, 'http_only' => true, 'same_site' => 'lax', ]; EOF # 3. Laravel Cache komplett leeren echo "🧹 Leere Laravel Cache komplett..." php artisan config:clear 2>/dev/null || echo "⚠️ config:clear übersprungen" php artisan cache:clear 2>/dev/null || echo "⚠️ cache:clear übersprungen" php artisan route:clear 2>/dev/null || echo "⚠️ route:clear übersprungen" php artisan view:clear 2>/dev/null || echo "⚠️ view:clear übersprungen" # 4. HTTPS-Force in .htaccess echo "🔒 Füge HTTPS-Force hinzu..." cat > public/.htaccess << 'EOF' Options -MultiViews -Indexes RewriteEngine On # Force HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] # Security Headers Header always set X-Content-Type-Options nosniff Header always set X-Frame-Options DENY Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set Content-Security-Policy "upgrade-insecure-requests" Header always set X-Forwarded-Proto https # Protect sensitive files Order allow,deny Deny from all Order allow,deny Deny from all Order allow,deny Deny from all # Compression AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # Cache Control ExpiresActive on ExpiresByType text/css "access plus 1 year" ExpiresByType application/javascript "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" EOF # 5. Apache neu laden echo "🔄 Lade Apache neu..." systemctl reload apache2 # 6. Test echo "🧪 Teste HTTPS-Konfiguration..." curl -I https://neonail.vogt.de.com echo "" echo "✅ Safari Formular-Sicherheit behoben!" echo "📋 Testen Sie: https://neonail.vogt.de.com" echo "" echo "📋 Falls Warnung bleibt:" echo "1. Safari-Cache leeren (Cmd+Shift+R)" echo "2. Private-Fenster testen" echo "3. Safari-Einstellungen: Entwickler > Leere Caches" echo "4. Safari-Einstellungen: Datenschutz > Website-Daten verwalten"