Position actuelle: Accueil> Derniers articles> Comment détecter la source des liens de saut via parse_url

Comment détecter la source des liens de saut via parse_url

gitbox 2025-05-20

La source de saut est généralement transmise par le champ référente de l'en-tête de demande HTTP, qui contient l'URL de la page où se trouvait l'utilisateur avant d'accéder à la page actuelle. Par exemple, lorsqu'un utilisateur clique sur un lien du site Web A au site Web B, le côté serveur du site B peut lire l'URL du site Web A à $ _Server ['http_referrer'] .

Cependant, il est important de noter:

  • Le référence n'envoie pas nécessairement et certains navigateurs ou plugins peuvent le désactiver.

  • Le référence peut être falsifié et ne peut donc pas faire confiance à complètement.

2. Introduction à la fonction PARSE_URL de PHP

La fonction PARSE_URL peut décomposer les URL en composants, tels que le schéma (protocole), l'hôte (nom de domaine), le chemin (chemin), etc. Le résultat de retour est un tableau associatif qui nous facilite pour juger différentes parties de l'URL.

 $url = "https://gitbox.net/path/to/page?query=123";
$parsed = parse_url($url);
print_r($parsed);

Sortir:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /path/to/page
    [query] => query=123
)

3. Exemple de code pour implémenter la détection de source de saut

L'exemple suivant montre comment utiliser PHP pour détecter la source de saut et déterminer s'il provient d'un nom de domaine spécifié (comme Gitbox.net ):

 <?php
// Obtenir HTTP_REFERER
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

if (empty($referer)) {
    echo "Aucune information de source,Peut-être l&#39;accès direct ou le navigateur désactivé Referer。";
    exit;
}

// Analyser la source URL
$parsedUrl = parse_url($referer);

// Déterminez s&#39;il contient host
if (!isset($parsedUrl['host'])) {
    echo "source URL Format incorrect。";
    exit;
}

// 指定允许的source域名
$allowedDomains = ['gitbox.net'];

// 判断source是否在允许列表中
if (in_array($parsedUrl['host'], $allowedDomains)) {
    echo "访问source于可信域名:" . htmlspecialchars($parsedUrl['host']);
    // Ici, vous pouvez faire un traitement logique ultérieur,Si l&#39;accès ou l&#39;exploitation forestière est autorisé
} else {
    echo "访问source不可信,source域名:" . htmlspecialchars($parsedUrl['host']);
    // Peut être utilisé pour le saut、Accès refusé, etc.
}
?>

4. Notes supplémentaires

  • Considérations de sécurité <br> Vous ne pouvez pas compter entièrement sur le référence pour les jugements de sécurité. Il est recommandé de coopérer avec d'autres moyens, tels que la vérification de la connexion, la vérification des jetons, etc.

  • Prise en charge du nom multi-domaines
    Le tableau $ allowingdomains peut ajouter plusieurs noms de domaine et prendre en charge plusieurs sources de confiance.

  • Optimisation des performances
    PARSE_URL est simple à traiter, a des frais généraux à faible performance et convient aux appels à haute fréquence.

5. Résumé

En utilisant la fonction PARSE_URL de PHP, vous pouvez facilement analyser l'URL de la source du lien de saut et réaliser la détection et le filtrage de la source de saut. Combinés avec le référer dans l'en-tête de demande HTTP, les développeurs peuvent gérer plus de manière flexible les autorisations d'accès et l'analyse du comportement des utilisateurs.
Dans les projets réels, vous pouvez également porter des jugements plus granulaires sur les sources en fonction des besoins de l'entreprise pour améliorer la sécurité du site Web et l'expérience utilisateur.