feat: security audit, rate limiting, server-side pricing, html escaping and security headers

This commit is contained in:
MichalC
2026-08-01 13:24:41 +02:00
parent f07f2c2407
commit 47a9ac07fb
24 changed files with 292 additions and 151 deletions
+2 -4
View File
@@ -1,4 +1,5 @@
import { Metadata } from 'next';
import { JsonLd } from '@/components/ui/JsonLd';
import { notFound } from 'next/navigation';
import Link from 'next/link';
import { Clock, Phone, ArrowRight } from 'lucide-react';
@@ -63,10 +64,7 @@ export default async function MiastoPage({ params }: Props) {
return (
<main>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<JsonLd data={jsonLd} />
{/* HERO */}
<HeroSection
+2 -1
View File
@@ -1,4 +1,5 @@
import { Metadata } from 'next';
import { JsonLd } from '@/components/ui/JsonLd';
import { HeroSection } from '@/components/sections/HeroSection';
import { InfoHighlights } from '@/components/sections/InfoHighlights';
import { AcTypesSection } from '@/components/sections/AcTypesSection';
@@ -71,7 +72,7 @@ export default function KlimatyzacjaPage() {
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(faqJsonLd) }} />
<JsonLd data={faqJsonLd} />
<main>
<HeroSection
eyebrow="15+ lat doświadczenia · Split i multisplit · Uprawnienia F-gaz"
@@ -1,4 +1,5 @@
import { Metadata } from 'next';
import { JsonLd } from '@/components/ui/JsonLd';
import { notFound } from 'next/navigation';
import Link from 'next/link';
import { MapPin, Clock, Phone, ArrowRight } from 'lucide-react';
@@ -67,10 +68,7 @@ export default async function DzielnicaPage({ params }: Props) {
return (
<main>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<JsonLd data={jsonLd} />
<HeroSection
eyebrow={`Klimatyzacja ${district.name} · Wrocław · F-Gaz`}