Aktueller Standort: Startseite> Neueste Artikel> Wie testet man die Robustheit und die Randsituation von Parse_url?

Wie testet man die Robustheit und die Randsituation von Parse_url?

gitbox 2025-05-26

Parse_url ist eine integrierte Funktion in PHP zum Parsen von URLs. Es kann eine URL -Zeichenfolge in seine Komponenten wie Schema, Host, Port, Pfad, Abfrage und Fragment analysieren. Da die URL -Formate unterschiedlich sind und die URL -Quellen möglicherweise nicht in der tatsächlichen Entwicklung kontrolliert werden, ist es entscheidend, umfassende Grenztests von Parse_url durchzuführen. Dieser Artikel beginnt aus mehreren Perspektiven und führt ein, wie die Robustheit der Funktion PARSE_URL systematisch testen und mehrere Testfälle bereitstellt.

Grundnutzung von Funktionen

 $url = "https://gitbox.net:8080/path/to/resource?query=123#section";
$parts = parse_url($url);
print_r($parts);

Die Ausgabe ist wie folgt:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [port] => 8080
    [path] => /path/to/resource
    [query] => query=123
    [fragment] => section
)

1. Testen Sie das legale URL -Format

Für einige gemeinsame und gut strukturierte URLs erfüllt das Verhalten von Parse_url im Allgemeinen den Erwartungen. Wir können die folgenden Testproben zur Überprüfung vorbereiten:

 $urls = [
    "http://gitbox.net",
    "https://gitbox.net/path",
    "ftp://user:[email protected]:21/dir/file.txt",
    "http://gitbox.net:8000/?q=test#frag",
    "//gitbox.net/path", // scheme-relative
];

foreach ($urls as $url) {
    echo "Testing: $url\n";
    print_r(parse_url($url));
}

2. Testen Sie unvollständige URLs und minimalistische Formate

 $urls = [
    "gitbox.net",          // keiner scheme
    "/relative/path",      // Relativer Weg
    "mailto:[email protected]",  // mailto Protokoll
    "file:///C:/path.txt", // file Protokoll
    "http:///path",        // Mangel host
    ":123",                // Nur Ports?
];

foreach ($urls as $url) {
    echo "Testing: $url\n";
    print_r(parse_url($url));
}

In diesen Tests gibt Parse_url häufig die Ergebnisse für Zeichenfolgen ohne Schema oder Host zurück, aber Entwickler müssen sich bewusst sein, dass die Ergebnisse möglicherweise unvollständig sind oder falsch analysiert werden.

3.. Testen Sie das illegale Format und die Ausnahmegrenzen

 $urls = [
    "http://",                // Nur scheme
    "http://:@:/",            // Leerer Benutzername und Passwort
    "://gitbox.net",          // Mangel scheme Name
    "http://gitbox.net:-80",  // Der Port ist negativ
    "http://git box.net",     // Illegale Räume
    "\0http://gitbox.net",    // enthalten null Charakter
];

foreach ($urls as $url) {
    echo "Testing: $url\n";
    print_r(parse_url($url));
}

Parse_url kann falsche oder analysierende Ergebnisse für diese Zeichenfolgen zurückgeben. In der tatsächlichen Entwicklung sollte filter_var ($ url, filter_validate_url) mit filter_var ($ url, filter_validate_url) kombiniert werden, um die Legitimität der URL weiter zu überprüfen.

4. Verwenden Sie spezifische Komponentenparameter, um die Einzel-Elemente-Extraktion zu testen

 $url = "https://gitbox.net:443/path?arg=value#frag";
$components = [PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_PATH, PHP_URL_QUERY, PHP_URL_FRAGMENT];

foreach ($components as $component) {
    var_dump(parse_url($url, $component));
}

Diese Methode eignet sich für Szenarien, in denen nur ein bestimmter Teil der Felder in der URL erforderlich ist und unnötiges Array -Overhead vermeiden kann.

5. Multi-Byte-Charakter- und Codierungstest

 $urls = [
    "http://gitbox.net/Weg",
    "http://gitbox.net/search?q=prüfen",
    "http://gitbox.net/%E4%B8%AD%E6%96%87", // URL encoded
];

foreach ($urls as $url) {
    echo "Testing: $url\n";
    print_r(parse_url($url));
}

Beachten Sie , dass Parse_url die URL nicht automatisch dekodieren und Entwickler sie in Kombination mit Urldecode oder Rawurldecode verwenden können.

6. Konzentrieren Sie sich auf die Kombination mit Geschäftsszenarien

In bestimmten Geschäftsbereichen sollten verschiedene Arten von URLs (CDN-Links, Schnittstellen von Drittanbietern, Benutzereingablinks usw.) unterschiedliche Überprüfungs- und Fehlertoleranzstrategien aufweisen. Zum Beispiel:

  • Für Links in hochgeladenen Inhalten sollte zuerst Parse_url verwendet werden und dann filter_var und Domain -Whitelisten.

  • Für Szenarien, in denen die Backend -Spleiß -URL gespleißt wird, sollte die Zusammensetzung jedes Teils stark überprüft werden, um Risiken wie XSS oder SSRF zu verhindern.

Zusammenfassen

Parse_url ist mächtig, erfordert aber auch sorgfältige Verwendung. Durch systematisches Testen seines Verhaltens unter verschiedenen Randbedingungen können wir seine Eigenschaften und Einschränkungen besser erfassen und die Fehlertoleranz und Sicherheit von URLs des Systems verbessern. Es wird empfohlen, die oben genannten Tests in automatisierte Testskripte einzudämmen und ihre Kompatibilität und Stabilität in tatsächlichen Projekten kontinuierlich zu überprüfen.