Aktueller Standort: Startseite> Neueste Artikel> http_build_query und filter_input werden kombiniert, um Abfragesträge zu generieren, die den Sicherheitsanforderungen entsprechen

http_build_query und filter_input werden kombiniert, um Abfragesträge zu generieren, die den Sicherheitsanforderungen entsprechen

M66 2025-06-22

In der PHP -Entwicklung ist das Aufbau von URL -Abfragen eine sehr häufige Aufgabe. http_build_query () ist ein leistungsstarkes Tool, das Arrays schnell in URL-kodierte Abfragebräge umwandelt. In praktischen Anwendungen müssen wir jedoch normalerweise Parameter von der Benutzereingabe abrufen. Um diese Eingaben sicher zu verarbeiten, ist filter_input () eine unverzichtbare Funktion. Die Verwendung der beiden zusammen kann die Sicherheit erheblich verbessern und gleichzeitig Effizienz sicherstellen und Probleme wie XSS und Injektion vorbeugen.

1. Einführung in http_build_query ()

http_build_query () nimmt ein Array und wandelt es in eine URL -Abfrage -Zeichenfolge um, die dem RFC 3986 -Codierungsformat entspricht. Zum Beispiel:

<code> $ params = ['such' => 'php', 'Seite' => 2];

$ queryString = http_build_query ($ params);
// Ausgabe: Search = PHP & Page = 2
</code>

Diese Funktion ist sehr geeignet, um Abfragebräge zu spleißen, und kann bei Verwendung mit Pfaden schnell Sprungverbindungen erstellen:

<code> $ url = 'https://m66.net/search.php?' . $ queryString; </code>

2. Die Rolle von filter_input ()

Bei der Verarbeitung von Benutzereingaben können Sie $ _get oder $ _post nicht direkt verwenden, da die nicht filtered Eingabe möglicherweise böswillige Inhalte enthält. filter_input () stellt eine Standardschnittstelle zur Verfügung, um Eingabedaten zu erhalten und zu filtern:

<Code> $ search = filter_input (input_get, 'such', filter_sanitize_string); $ page = filter_input (input_get, 'page', filter_validate_int); </code>

Im obigen Code wird der Suchparameter in Klartext gereinigt und der Parameter der Seitenparameter als Ganzzahl verifiziert.

3. Verwenden Sie beide

Nehmen wir an, wir möchten einen Ausleitungsverbindungslink basierend auf Benutzereingaben erstellen. Wir hoffen, Parameter aus der URL zu extrahieren, zu verifizieren und zu reinigen und dann in eine sichere Abfragebarstellung zu spleißen. Zu diesem Zeitpunkt können wir das tun:

<Code> $ params = [];

$ search = filter_input (input_get, 'such', filter_sanitize_string);
if ($ search! == null && $ search! == false) {
$ params ['such'] = $ suche;
}

$ page = filter_input (input_get, 'page', filter_validate_int);
if ($ page! == null && $ page! == false) {
$ params ['Seite'] = $ Seite;
}

$ queryString = http_build_query ($ params);

$ redirecturl = ' https://m66.net/results.php ?' . $ queryString;

// Umleitung durchführen (Beispiel, springen Sie nicht direkt ohne Überprüfung in der tatsächlichen Produktionsumgebung)
Header ('Ort:'. $ redirecturl);
Ausfahrt;
</code>

Auf diese Weise stellen wir sicher, dass nur legale und sichere Parameter in die URL gespleißt werden.

4. Verteidigung gegen XSS und Injektionsangriffe

Nicht vertrauenswürdige Inhalte, die vom Benutzer eingegeben wurden, kann böswillige Skripte enthalten, z. B. <Script> alert (1) </script> . Durch Kombinieren von Filter_Input () mit Filter_Sanitize_String und Filter_validate_* -Serie können wir potenziell gefährliche Zeichen herausfiltern oder Datentypen ablehnen, die den Erwartungen nicht entsprechen, wodurch diese Angriffe verhindern.

Darüber hinaus wird das Einspritzrisiko weiter reduziert, indem nur die verifizierten Parameter an http_build_query () übergeben werden.

5. Zusammenfassung

Obwohl die Verwendung von http_build_query () zum Konstrukt von Abfragesträgern bequem ist, muss die Prämisse sein, dass die Parameter vollständig überprüft wurden. Das Kombinieren mit filter_input () kann nicht nur die Qualität des Codes verbessern, sondern auch die Sicherheit von Webanwendungen effektiv verbessern. Insbesondere wenn es notwendig ist, die Benutzereingaben zu spleißen, um Links zu generieren, sollte diese Kombinationsmethode zu einer Standardpraxis für Entwickler werden.