Lädt alle Gutscheine, Kontakte und Mitglieder dieses Haushalts als JSON-Datei herunter — ohne Passwörter oder Geheimnisse.
+ + Haushaltsdaten exportieren + +Für die SSO-Verknüpfung nötig.
diff --git a/app/settings/server-households.tsx b/app/settings/server-households.tsx index 90fb2d3..60f8660 100644 --- a/app/settings/server-households.tsx +++ b/app/settings/server-households.tsx @@ -155,13 +155,23 @@ function HouseholdCard({
{household.mitgliederAnzahl} Mitglied(er) · {household.gutscheineAnzahl} Gutschein(e) im gemeinsamen Bestand
diff --git a/next.config.ts b/next.config.ts
index a3c5d10..2e037b6 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -4,5 +4,22 @@ const nextConfig: NextConfig = {
// Kein next/image im Einsatz (nur plain ); Optimizer deaktivieren,
// damit der /_next/image-Endpunkt sharp gar nicht erst lädt.
images: { unoptimized: true },
+ async headers() {
+ return [
+ {
+ source: "/:path*",
+ headers: [
+ // MIME-Sniffing verbieten (Bypässe bei Datei-Downloads erschweren)
+ { key: "X-Content-Type-Options", value: "nosniff" },
+ // Kein Einbetten in fremde Seiten (Clickjacking-Schutz)
+ { key: "X-Frame-Options", value: "DENY" },
+ // Referrer nur same-origin bzw. downgrade-sicher senden
+ { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
+ // Browser-APIs einschränken, die die App nicht braucht
+ { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" },
+ ],
+ },
+ ];
+ },
};
export default nextConfig;