Sicherheits-Header prüfen
KIT prüft, welche der gängigen Sicherheits-Header eine Website tatsächlich setzt – etwa HSTS, Content-Security-Policy oder X-Frame-Options – und meldet, welche davon fehlen. Gedacht für Entwickler und IT-Verantwortliche, die eine Grundabsicherung vor einer Abnahme oder einem internen Audit kontrollieren wollen, statt sich allein auf das Gefühl zu verlassen, dass „schon alles passt“.
Online ausführen
Führen Sie dies mit Ihrem Konto auf unseren Servern aus. Kostenlose Tools laufen in Ihrem Browser; dieses wird zum oben genannten Preis von Ihrem KIT-Guthaben abgebucht.
Welche Header geprüft werden
KIT kontrolliert die gängigen sicherheitsrelevanten Header einer Antwort, darunter Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options und Referrer-Policy. Für jeden dieser Header meldet das Ergebnis, ob er gesetzt ist und, falls ja, mit welchem Wert, sodass sich eine fehlende oder falsch gesetzte Angabe sofort erkennen lässt. Ein vollständiges Bild entsteht dabei erst, wenn alle relevanten Header gemeinsam betrachtet werden, statt nur einen einzelnen Eintrag herauszugreifen.
Warum fehlende Header ein reales Risiko sind
Ein fehlender X-Frame-Options-Header erlaubt es fremden Seiten unter Umständen, die eigene Seite unsichtbar einzubetten und Nutzer zu Klicks zu verleiten; ein fehlendes HSTS lässt eine Verbindung leichter auf eine unverschlüsselte Variante zurückfallen. Diese Lücken sind meist mit wenigen Zeilen Serverkonfiguration schließbar, werden aber im Alltag häufig übersehen oder bei einer Migration versehentlich verworfen. Browser respektieren diese Angaben zuverlässig, sofern sie überhaupt gesetzt sind – das eigentliche Risiko liegt fast immer im schlichten Vergessen, nicht in einer technischen Unmöglichkeit.
Wo diese Prüfung endet
KIT prüft, ob ein Header vorhanden und plausibel gesetzt ist, bewertet aber nicht jede mögliche Feinkonfiguration einer Content-Security-Policy inhaltlich. Für eine vollständige Sicherheitsabnahme ersetzt die Prüfung keine spezialisierte Penetrationstestung, liefert aber einen soliden ersten Überblick, auf dem sich weitere Schritte aufbauen lassen. Brauchen Sie über die grundlegenden Header hinaus einen förmlichen Nachweis, etwa für eine Ausschreibung, benötigen Sie ergänzend einen spezialisierten Dienstleister.
Wann sich die Prüfung lohnt
Vor der Übergabe eines neuen Projekts, im Rahmen einer internen Checkliste oder als wiederkehrende Kontrolle nach jeder Serveränderung zeigt die Prüfung schnell, ob eine zuvor gesetzte Absicherung noch vorhanden ist oder bei einem Update versehentlich verloren ging, ohne dass es zunächst jemandem auffällt. Gerade nach einem automatisierten Deployment lohnt sich ein kurzer Blick, weil einzelne Konfigurationszeilen bei einem Update leicht verloren gehen.
Anwendungsfälle
Abnahme vor Projektübergabe
Eine Web-Agentur aus Hamburg prüft vor der Übergabe jedes Projekts die Sicherheits-Header, um eine fehlende HSTS-Angabe nicht erst beim Kunden auffallen zu lassen.
Interne Sicherheits-Checkliste
Ein IT-Dienstleister nimmt die Prüfung in die eigene Abnahme-Checkliste auf, um bei jedem neuen Kundenprojekt denselben Mindeststandard sicherzustellen.
Kontrolle nach einer Serveränderung
Ein Unternehmen aus Stuttgart prüft nach einem Wechsel des Hosting-Anbieters, ob die zuvor gesetzten Sicherheits-Header übernommen wurden oder in der neuen Konfiguration fehlen.
Häufige Fragen
Was kostet eine Sicherheits-Header-Prüfung?
$0.002 pro geprüfter URL, unabhängig davon, wie viele Header fehlen.
Speichert KIT den Inhalt der geprüften Seite?
Nein, ausgewertet werden ausschließlich die HTTP-Header der Antwort, nicht der Inhalt der Seite selbst.
Ersetzt diese Prüfung einen vollständigen Sicherheitstest?
Nein, sie prüft gezielt die gängigen Sicherheits-Header und liefert einen ersten, verlässlichen Überblick – für eine vollständige Bewertung braucht es weitergehende Verfahren.
Welche Header gelten als Mindeststandard?
Dazu zählen üblicherweise Strict-Transport-Security, X-Content-Type-Options und X-Frame-Options; das genaue Ergebnis richtet sich immer nach der geprüften Seite.
Muss ich mich vorab irgendwo einloggen?
Nein, ein Login ist nicht vorgesehen. Jede Prüfung wird einzeln über PayPal oder Rechnung bezahlt.
Wie unterscheidet sich das von der einfachen Header-Abfrage?
Die einfache Abfrage zeigt alle Header unbewertet; diese Funktion bewertet gezielt, welche der sicherheitsrelevanten Header fehlen.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/web/security-headers \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/security-headers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/security-headers",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/security-headers", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/security-headers", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"url": "https://ejemplo.com"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.security_headers",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |