GET-Parameter verstehen und sicher in URLs nutzen

13. Juni 2026

Alles über URL-Parameter: Definition, Einsatz und Tipps für technisches SEO. Lerne, wie du den get parameter optimal nutzt.

Inhaltsverzeichnis

Eine URL wie /produkte?category=laptop&sort=price sieht unscheinbar aus, steuert aber oft die komplette Darstellung einer Seite. Der englische Ausdruck get parameter beschreibt Werte, die über die URL an eine Webanwendung übergeben werden. Ich zeige, wie diese Parameter aufgebaut sind, wie JavaScript und gängige Frameworks sie auslesen und warum Validierung, Datenschutz und korrektes Encoding entscheidend sind.

GET-Parameter machen URLs steuerbar und nachvollziehbar

  • Aufbau: Parameter stehen nach dem Fragezeichen und werden mit einem kaufmännischen Und verknüpft.
  • Einsatz: Sie eignen sich besonders für Suche, Filter, Sortierung, Pagination und gemeinsam nutzbare Links.
  • Auslesen: Im Browser ist URLSearchParams die sauberste Standardlösung.
  • Sicherheit: Passwörter, Tokens und andere vertrauliche Daten gehören nicht in die URL.
  • Validierung: Jeder Wert muss serverseitig geprüft, typisiert und auf erlaubte Optionen begrenzt werden.

Beispiel für einen URL-Parameter: ?key1=value1&key2=value2. Hier werden Schlüssel und Werte für den get parameter gezeigt.

Was GET-Parameter in einer URL tatsächlich leisten

Ein GET-Parameter ist ein benanntes Wertepaar in der sogenannten Query-String-Komponente einer URL. Sie beginnt mit ?, etwa in /suche?q=webentwicklung. Der Name lautet hier q, der übergebene Wert webentwicklung.

Mehrere Werte werden normalerweise mit & getrennt. Die URL /artikel?topic=ai&page=2 übergibt also die Parameter topic und page. Der Browser sendet diese Informationen bei einem HTTP-GET-Aufruf an den Server, der daraus beispielsweise eine gefilterte Ergebnisliste erzeugt.

Bestandteil Beispiel Bedeutung
Pfad /produkte Die angeforderte Ressource
Beginn der Query ? Start der Parameterliste
Name und Wert category=laptop Ein konkretes Wertepaar
Trennzeichen & Verbindet mehrere Parameter

In der Praxis nutze ich diese Technik vor allem für Zustände, die sich problemlos teilen und wiederholen lassen. Eine Suchseite mit ?q=seo&page=2 kann als Lesezeichen gespeichert, per E-Mail verschickt und von Suchmaschinen verarbeitet werden. Genau darin liegt der große Vorteil gegenüber Daten, die nur im temporären Speicher des Browsers liegen.

Wann sich die URL als Transportweg eignet

GET-Parameter passen zu Vorgängen, bei denen jemand Informationen lesen, filtern oder auswählen möchte. Typische Beispiele sind Suchbegriffe, Kategorien, Sprachversionen, Sortierungen, Seitenzahlen und Datumsbereiche.

  • /blog?tag=javascript filtert Beiträge nach einem Thema.
  • /produkte?min=50&max=200 begrenzt einen Preisbereich.
  • /suche?q=cloud&page=3 zeigt eine bestimmte Ergebnisseite.
  • /kalender?month=2026-08 wählt einen Zeitraum aus.

Ein GET-Aufruf sollte nach der HTTP-Semantik keine dauerhafte Änderung auslösen. Das Anzeigen einer gefilterten Liste ist passend, das Löschen eines Kontos über eine URL wie /delete?id=42 dagegen ein gefährliches Design. Auch wenn ein Framework technisch beide Varianten verarbeiten kann, trenne ich solche Aktionen klar und verwende dafür einen geeigneten Schreibzugriff mit zusätzlichem Schutz gegen ungewollte Anfragen.

Die Alternative ist meist POST. Dabei liegen die Nutzdaten im Request-Body und nicht sichtbar in der URL. Für Logins, Bestellungen, Uploads und Änderungen an Daten ist POST in der Regel die bessere Wahl, wobei auch dort Authentifizierung, Berechtigungsprüfung und CSRF-Schutz notwendig bleiben.

Kriterium GET mit Query-Parametern POST mit Request-Body
Geeignet für Suche, Filter, Anzeige Erstellen, Ändern, vertrauliche Formulare
In URL sichtbar Ja Nein, normalerweise nicht
Als Link teilbar Sehr gut Nicht auf dieselbe Weise
Browser-Cache und Verlauf Kann betroffen sein Weniger direkt sichtbar
Für Zustandsänderungen Nicht empfehlenswert Passender

GET-Parameter mit JavaScript und Frameworks auslesen

Im Frontend greife ich nicht per String-Splitting auf die URL zu. Die Web API URLSearchParams übernimmt Dekodierung und Zugriff auf einzelne Werte deutlich zuverlässiger.

const params = new URLSearchParams(window.location.search);

const query = params.get("q") ?? "";
const page = Number.parseInt(params.get("page") ?? "1", 10);

console.log(query, page);

get() liefert null, wenn ein Parameter fehlt. Das ist wichtig, weil alle Werte zunächst Zeichenketten sind. Ein Wert wie page=2 wird nicht automatisch zur Zahl, deshalb sollte die Anwendung ihn ausdrücklich umwandeln und anschließend auf einen sinnvollen Bereich prüfen.

Mehrfach vorkommende Parameter lassen sich mit getAll() lesen. Das ist praktisch für Filter mit mehreren Auswahlwerten.

const params = new URLSearchParams("?tag=ai&tag=webentwicklung");
const tags = params.getAll("tag");

console.log(tags); // ["ai", "webentwicklung"]

In React, Vue oder Svelte bleibt das Prinzip gleich. Das Framework verändert höchstens, wann der Wert gelesen und wie eine Änderung im Interface verarbeitet wird. Bei einer clientseitigen Navigation sollte die Komponente auf URL-Änderungen reagieren, damit Browser-Zurück, Vorwärtsnavigation und direkte Links konsistent funktionieren.

Für neue URLs verwende ich den Konstruktor URL statt manueller Verkettung. Sonderzeichen, Leerzeichen und vorhandene Parameter werden dadurch korrekt behandelt.

const url = new URL("/suche", window.location.origin);

url.searchParams.set("q", "künstliche Intelligenz");
url.searchParams.set("page", "1");

history.pushState({}, "", url);

Auch serverseitig bieten Frameworks fertige Parser. In Express wird beispielsweise req.query verwendet, in PHP greift man häufig auf $_GET zu. In beiden Fällen gilt dieselbe Regel: Ein eingelesener Parameter ist noch keine vertrauenswürdige Eingabe.

app.get("/produkte", (req, res) => {
  const category = typeof req.query.category === "string"
    ? req.query.category
    : "";

  const allowed = ["laptop", "monitor", "zubehör"];
  const selected = allowed.includes(category) ? category : null;

  res.json({ category: selected });
});

Encoding, leere Werte und doppelte Namen richtig behandeln

URLs dürfen nicht jedes Zeichen unverändert enthalten. Leerzeichen, Umlaute, kaufmännische Und-Zeichen und Fragezeichen müssen korrekt codiert werden. Aus künstliche Intelligenz wird in einer URL beispielsweise eine percent-kodierte Darstellung, die der Browser beim Auslesen wieder in lesbaren Text umwandelt.

Manuelles Ersetzen von Zeichen ist fehleranfällig. Ich lasse diese Arbeit grundsätzlich URLSearchParams oder den jeweiligen Serverbibliotheken. So wird aus einem Suchbegriff mit & nicht versehentlich ein zusätzlicher Parameter.

const params = new URLSearchParams();
params.set("q", "R&D für Webteams");

console.log(params.toString());

Ein fehlender Parameter, ein leerer Wert und der Text null sind drei unterschiedliche Fälle. /suche, /suche?q= und /suche?q=null sollten nicht automatisch gleich behandelt werden. Definiere deshalb pro Parameter, ob er erforderlich ist, welchen Standardwert er besitzt und welche Form erlaubt ist.

Bei Listen gibt es mehrere gängige Schreibweisen, etwa tag=ai&tag=seo oder tags=ai,seo. Ich bevorzuge wiederholte Schlüssel, wenn die verwendete Bibliothek sie sauber unterstützt. Kommagetrennte Listen wirken zwar kompakt, müssen aber zusätzlich auf leere Einträge, Leerzeichen und unerlaubte Werte geprüft werden.

Doppelte Namen sind ein weiterer Stolperstein. Je nach Server, Proxy oder Framework kann bei role=user&role=admin der erste, der letzte oder eine Liste der Werte verwendet werden. Diese Uneinheitlichkeit kann Sicherheitsprobleme schaffen. Für sensible Entscheidungen sollte die Anwendung doppelte Parameter ablehnen oder eindeutig als Liste verarbeiten.

Sicherheit und Datenschutz dürfen nicht nachträglich kommen

Alles, was in der URL steht, kann in Browser-Historien, Server-Logs, Analysewerkzeugen, Screenshots und Referrer-Daten auftauchen. Deshalb gehören Passwörter, Zugangstokens, Kreditkartendaten und personenbezogene Geheimnisse nicht in Query-Parameter.

OWASP weist außerdem darauf hin, dass Parameter in GET-Anfragen besonders leicht verändert werden können. Ein Angreifer kann Werte direkt in der Adresszeile manipulieren, deshalb darf der Server niemals davon ausgehen, dass ein Parameter aus einer vertrauenswürdigen Quelle stammt.

Eingaben prüfen statt nur bereinigen

Validierung bedeutet, eine Eingabe gegen klare Regeln zu prüfen. Für eine Seitenzahl erwarte ich etwa eine ganze Zahl zwischen 1 und 1000, für eine Sortierung nur eine kleine erlaubte Liste wie price-asc oder name. Alles andere wird abgelehnt oder auf einen sicheren Standard zurückgesetzt.

Das schützt unter anderem vor unerwarteten Datenbankabfragen, Logikfehlern und HTTP Parameter Pollution. Für Datenbankzugriffe kommen zusätzlich vorbereitete Statements oder ein ORM mit sicherer Parameterbindung zum Einsatz. Das einfache Entfernen einzelner Zeichen ist kein verlässlicher Schutz gegen SQL-Injection.

Lesen Sie auch: Softwarebeispiele für Webentwicklung und passende Frameworks

Ausgaben ebenfalls absichern

Ein Suchwert kann nicht nur eine Datenbankabfrage beeinflussen, sondern später auch im HTML erscheinen. Wird der Inhalt ungefiltert in die Seite geschrieben, kann daraus Cross-Site-Scripting werden. Ich escape Benutzereingaben bei der Ausgabe und vermeide insbesondere innerHTML, wenn reiner Text genügt.

Auch Weiterleitungen brauchen eine Prüfung. Ein Parameter wie redirect=/konto darf nicht ohne Whitelist zu einer beliebigen externen Adresse führen. Sonst entsteht eine offene Weiterleitung, die für Phishing missbraucht werden kann.

Typische Fehler beim Einsatz in Projekten

Die meisten Probleme entstehen nicht beim Lesen der URL, sondern bei falschen Annahmen über ihre Werte. Diese Fehler sehe ich besonders häufig:

  • Keine Typumwandlung: Zeichenketten werden direkt mit Zahlen verglichen oder an Datenbankabfragen weitergereicht.
  • Fehlende Standardwerte: Die Anwendung bricht ab, wenn ein optionaler Parameter nicht vorhanden ist.
  • Vertrauen in den Browser: Ein verstecktes Feld oder eine URL macht eine Berechtigung nicht gültig.
  • Geheimnisse in Links: Session-Tokens oder Einmalcodes bleiben in Verlauf und Logs zurück.
  • Manuelles URL-Bauen: Sonderzeichen zerstören die Syntax oder verändern die Bedeutung anderer Parameter.
  • Uneinheitliche Benennung: Ein Teil des Systems erwartet sortBy, ein anderer sort.

Beim Testen prüfe ich nicht nur den Idealfall. Ich rufe die Seite ohne Parameter auf, verwende leere Werte, sehr lange Eingaben, ungültige Zahlen, Umlaute, doppelte Schlüssel und unerwartete Sonderzeichen. Anschließend kontrolliere ich, ob die Anwendung verständlich reagiert und ob im Server-Log sensible Daten landen.

Für öffentliche Schnittstellen lohnt sich zusätzlich eine dokumentierte Parameterliste. Sie sollte pro Feld den Datentyp, den Standardwert, erlaubte Werte und das Verhalten bei Fehlern nennen. Das spart später viel Zeit, besonders wenn mehrere Frontends oder externe Integrationen dieselbe API verwenden.

Eine belastbare Praxis für jede neue URL

Ich beginne bei jedem neuen Parameter mit einer einfachen Frage: Ist dieser Wert Teil des lesbaren Zustands einer Seite? Wenn ja, passt die URL meist gut. Wenn er eine Änderung auslöst, geheim bleiben muss oder sehr umfangreich ist, sollte er in einen geeigneteren Request-Mechanismus.

  • Benenne Parameter eindeutig und konsistent.
  • Definiere Typ, Pflichtstatus und Standardwert.
  • Nutze URLSearchParams oder Framework-Parser.
  • Validiere jeden Wert serverseitig gegen erlaubte Regeln.
  • Verwende keine vertraulichen Informationen in der URL.
  • Teste fehlende, leere, doppelte und manipulierte Eingaben.
  • Dokumentiere die URL-Struktur für andere Entwickler.

So bleiben Links teilbar, Such- und Filterfunktionen verständlich und Schnittstellen leichter wartbar. Der wichtigste Gedanke ist dabei simpel: GET-Parameter beschreiben, was angezeigt werden soll, aber sie beweisen nicht, was ein Nutzer darf. Die eigentliche Sicherheit entsteht erst durch saubere Prüfung und durch eine klare Trennung zwischen Lesen und Verändern.

Häufig gestellte Fragen

Sie eignen sich für lesbare Zustände wie Suche, Filter, Sortierung, Pagination, Kategorien, Sprachversionen und Datumsbereiche. Solche URLs lassen sich speichern, teilen und erneut aufrufen. Dauerhafte Änderungen wie das Löschen eines Kontos sollten dagegen nicht per GET ausgelöst werden.

Im Browser wird dafür URLSearchParams verwendet, zum Beispiel mit new URLSearchParams(window.location.search). get() liefert einzelne Werte oder null, getAll() liest mehrfach vorhandene Schlüssel. Da alle Werte zunächst Zeichenketten sind, müssen Zahlen wie page ausdrücklich umgewandelt und geprüft werden.

Passwörter, Zugangstokens, Kreditkartendaten und andere vertrauliche oder personenbezogene Geheimnisse gehören nicht in die URL. Query-Parameter können in Browser-Verlauf, Server-Logs, Analysewerkzeugen, Screenshots und Referrer-Daten auftauchen.

Jeder Wert sollte typisiert und gegen klare Regeln geprüft werden. Für eine Seitenzahl kann beispielsweise eine ganze Zahl zwischen 1 und 1000 erlaubt sein, während eine Sortierung auf Werte wie price-asc oder name begrenzt wird. Unerlaubte oder doppelte Parameter sollten abgelehnt oder eindeutig als Liste verarbeitet werden; für Datenbankzugriffe sind zusätzlich vorbereitete Statements oder sichere ORM-Parameterbindungen nötig.

Artikel bewerten

Bewertung: 0.00 Stimmenanzahl: 0

Tags:

get-parameter urlsearchparams eingabevalidierung url-encoding http-methoden

Beitrag teilen

Jose Hempel

Jose Hempel

Mein Name ist Jose Hempel und ich beschäftige mich seit 3 Jahren intensiv mit Webentwicklung, digitaler Strategie und künstlicher Intelligenz. Diese Themen faszinieren mich, weil sie die Art und Weise, wie wir arbeiten und interagieren, grundlegend verändern. Auf metawebart.de teile ich mein Wissen und meine Erkenntnisse, um komplexe Sachverhalte verständlich zu machen und Ihnen zu helfen, die Potenziale dieser Technologien für sich zu nutzen. Dabei lege ich Wert darauf, Informationen gründlich zu recherchieren, verschiedene Perspektiven zu beleuchten und stets aktuelle Entwicklungen im Blick zu behalten, damit Sie stets nützliche und verlässliche Einblicke erhalten.

Kommentar schreiben