Table des matières
1. Supposons toujours que $_GET n'est pas fiable
2. Vérifiez si le paramètre existe
3. Désiciation en fonction du type de données attendu
Pour les entiers:
Pour les chaînes:
Pour les booléens:
4. Valider contre la logique commerciale
5. Échapper à la sortie de manière appropriée
6. Utilisez HTTPS et évitez les données sensibles dans $_GET
7. Réglez les limites et les gaz si nécessaire
Résumé du flux de travail
Maison développement back-end tutoriel php De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP

De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP

Aug 03, 2025 am 11:12 AM
PHP Superglobal - $_GET

Traitez toujours $ \ _ obtenir des données comme non fiables; 2. Vérifiez si le paramètre existe en utilisant ISSET () ou Null Coalesming; 3. Sensibilisez-vous en fonction du type attendu - Filtre d'utilisation \ _validate \ _int pour les entiers, htmlSpecialCars () pour les chaînes et filtre \ _validate \ _boolean pour les booléens; 4. Valider contre la logique métier, tels que les valeurs autorisées ou les contraintes de plage; 5. Échappez la sortie de manière appropriée pour le contexte (par exemple, htmlSpecialChars () pour HTML, instructions préparées pour SQL); 6. Ne jamais passer les données sensibles via $ \ _ Get et utilisez toujours HTTPS; 7. Mettre en œuvre les contrôles de longueur des entrées et la limitation des taux pour prévenir les abus; Le flux de travail complet garantit que les entrées brutes $ \ _ sont transformées en données sûres et fiables en filtrant l'entrée, en échappant à la sortie et en supposant que toutes les entrées sont potentiellement malveillantes.

De l'entrée brute aux données sûres: le flux de travail définitif du superglobal de PHP \ s $ _get

La gestion de la saisie des utilisateurs en toute sécurité est l'un des aspects les plus critiques du développement Web. Parmi les superglobals de PHP, $_GET est fréquemment utilisé pour récupérer les données des paramètres d'URL, mais c'est également un point d'entrée courant pour les vulnérabilités de sécurité s'il n'est pas géré correctement. Ce guide vous guide à travers un flux de travail définitif et réel pour transformer l'entrée RAW $_GET en données sûres et utilisables.

De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP

1. Supposons toujours que $_GET n'est pas fiable

La première règle: ne traitez jamais les données $_GET comme sûres par défaut . Toute valeur provenant de l'URL peut être manipulée par les utilisateurs ou les attaquants. Même si vos liens sont générés côté serveur, les utilisateurs peuvent modifier manuellement la chaîne de requête.

Par exemple:

De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP
 https://example.com/user.php?id=5

Quelqu'un pourrait le changer en:

 https://example.com/user.php?id=999 'ou' 1 '=' 1

C'est pourquoi la validation et la désinfection ne sont pas négociables.

De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP

2. Vérifiez si le paramètre existe

Avant d'accéder à un paramètre $_GET , vérifiez toujours qu'il existe pour éviter les avis d'index non définis.

 if (isset ($ _ get ['id'])) {
    $ raw_id = $ _get ['id'];
} autre {
    // gérer le paramètre manquant
    mourir («id est requis»);
}

Alternativement, utilisez une coalescence nulle pour une syntaxe plus propre:

 $ raw_id = $ _get ['id'] ?? nul;

Si $raw_id est null , vous pouvez rediriger, afficher une erreur ou appliquer un défaut.


3. Désiciation en fonction du type de données attendu

Une fois que vous savez que le paramètre existe, désinfectez-les en fonction du type de données que vous attendez.

Pour les entiers:

Utilisez filter_var() avec FILTER_SANITIZE_NUMBER_INT . Mais mieux encore, validez avec FILTER_VALIDATE_INT si vous avez besoin d'une vérification de type strict.

 $ id = filter_var ($ _ get ['id'], filter_validate_int);

if ($ id === false) {
    Die ('ID non valide');
}

Remarque: FILTER_SANITIZE_NUMBER_INT ne garantit pas un entier - il supprime des caractères non valides mais laisse des chaînes comme 123abc comme 123 . Utilisez la validation lorsque l'intégrité du type est importante.

Pour les chaînes:

Coupez l'espace et les strip-tease ou échappent aux personnages dangereux en fonction du contexte.

 $ Search = Trim ($ _ get ['q'] ?? '');
$ search = filter_var ($ search, filter_sanitize_string, filter_flag_strip_low);

Évitez FILTER_SANITIZE_STRING dans PHP 8.1 (déprécié), alors envisagez le nettoyage manuel:

 $ search = htmlSpecialChars (Trim ($ _ get ['q'] ?? ''), ent_quotes, 'utf-8');

Cela prépare la chaîne pour la sortie en HTML, empêchant les XS.

Pour les booléens:

 $ active = filter_var ($ _ get ['active'] ?? '', filter_validate_boolean);

Renvoie true pour "1", "true", "on", etc.


4. Valider contre la logique commerciale

La désinfection ne suffit pas. Vous devez valider si les données ont du sens dans le contexte.

Par exemple, si vous attendez un numéro de page:

 $ page = filter_var ($ _ get ['page'] ?? 1, filter_validate_int, [
    'Options' => ['Default' => 1, 'min_range' => 1, 'max_range' => 1000]
]));

Ou valider contre les valeurs autorisées:

 $ tri = $ _get ['tri'] ?? 'nom';
$ allowing_sorts = ['name', 'date', 'prix'];
$ tri = in_array ($ srie, $ allowing_sorts)? $ SORT: 'NAME';

5. Échapper à la sortie de manière appropriée

Même après l'entrée désinfectée, la sortie d'échappement en fonction du contexte:

  • Sortie HTML : htmlspecialchars()
  • Requêtes SQL : utilisez des instructions préparées (jamais concaténé)
  • Javascript / json : json_encode() Échappement approprié
  • URL : urlencode() pour les paramètres

Exemple avec HTML:

 Echo &#39;<h1> Recherche:&#39;. htmlSpecialChars ($ search, ent_quotes, &#39;utf-8&#39;). &#39;</h1>&#39;;

Exemple avec PDO (SQL):

 $ stmt = $ PDO-> Préparer ("SELECT * dans les utilisateurs où id =?");
$ stmt-> exécuter ([$ id]);

6. Utilisez HTTPS et évitez les données sensibles dans $_GET

Ne passez jamais de données sensibles (jetons, mots de passe, PII) via des chaînes de requête. Ils sont connectés dans les journaux des serveurs, l'historique du navigateur et les en-têtes de références.

Utilisez à la place $_POST ou Sessions.

Assurez-vous également que votre site utilise HTTPS pour chiffrer les données en transit.


7. Réglez les limites et les gaz si nécessaire

Pour les critères de terminaison publics en utilisant $_GET , considérez la limitation des taux ou les restrictions de longueur d'entrée pour prévenir les abus.

 if (strlen ($ _ get [&#39;q&#39;] ?? &#39;&#39;)> 100) {
    Die («Recherchez la requête trop longue»);
}

Résumé du flux de travail

Voici le flux de travail sûr complet:

  • ✅ Vérifiez si la clé existe: $_GET['key'] ?? null
  • ✅ désinfecter en fonction du type (int, string, bool)
  • ✅ Valider contre le format attendu et les règles commerciales
  • ✅ Échappez avant la sortie ou utilisation dans les requêtes
  • ✅ Évitez les données sensibles dans les URL
  • ✅ Utilisez HTTPS et surveillez les abus

L'utilisation $_GET n'a pas besoin d'être risqué. Avec un flux de travail discipliné - synchronisant, validant et échappant - vous transformez une entrée brute et dangereuse en données sûres et fiables. La clé est de ne jamais sauter des étapes, même pour les paramètres «simples».

Fondamentalement: filtrez l'entrée, la sortie d'échappement et supposons que chaque valeur $_GET est sortie pour vous proposer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1525
276
Dégradation gracieuse: Gestion des paramètres de $ manquants et mal formé dans PHP Dégradation gracieuse: Gestion des paramètres de $ manquants et mal formé dans PHP Aug 08, 2025 pm 06:38 PM

Pour gérer efficacement les paramètres de $ manquants ou mal formés en PHP, l'entrée doit être validée et nettoyée en premier, à condition que des valeurs par défaut, des données accédés à l'aide de méthodes de type type et échoué gracieusement de manière conviviale. 1. Vérifiez toujours si les paramètres existent et vérifiez leur type et leur format, tels que l'utilisation d'ISSet () et Filter_Input () pour s'assurer que l'ID est un entier positif; 2. Définissez des valeurs par défaut sûres pour les paramètres facultatifs, tels que les champs de pagination ou de tri pour éviter les plantages en raison de la manquante; 3. Évitez l'accès direct à $ _get, la lecture sûre doit être effectuée en encapsulant des fonctions telles que get_param () et get_int () combinées avec des opérateurs de fusion nul; 4. Lorsque les paramètres sont non valides, l'API doit renvoyer le code d'état 400 et les erreurs JSON

L'impact de $ _get sur les stratégies de mise en cache et les meilleures pratiques SEO L'impact de $ _get sur les stratégies de mise en cache et les meilleures pratiques SEO Aug 05, 2025 am 07:46 AM

$ _GetParametersCanFragmentCacheentries, ReduceCacheHitrates, etcausecdncachingIneFiCEENCYSBecauseEachUniqueParametercombinationCreAtesAdisTinCturl; 2.TomitigateCachingisSues, NormalizeQueryParameters, LimitMeaningParaMeters, SetproperCache-ControlheAe-ControlheAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -r Uresque

L'art de la coalescence nul: moderniser votre récupération de données $ _get L'art de la coalescence nul: moderniser votre récupération de données $ _get Aug 07, 2025 pm 07:40 PM

Utilisez l'opérateur nullcoalescing (??) pour simplifier l'accès sécurisé au paramètre $ _get. 1. Utiliser ?? Au lieu de la vérification ISSet (), telle que $ page = (int) ($ _ get ['page'] ?? 1); 2. La conversion de type, le nettoyage des chaînes et la vérification de la valeur sont toujours nécessaires, telles que (int), Trim (), in_Array (), etc.; 3. Plusieurs valeurs par défaut peuvent être définies dans une chaîne, telle que $ query = $ _ get ['search'] ?? $ _ get ['q'] ?? $ _ get ['s'] ?? '', mais la surutilisation doit être évitée; 4. Notez que la fonction ne sera pas paresseuse à évaluer et qu'elle doit être exécutée retardée par des variables ou des fermetures; 5. Combinaison de la sécurité des types et de la vérification des entrées

Complexité de l'URL de l'approvisionnement: techniques de gestion des états utilisant $ _get Complexité de l'URL de l'approvisionnement: techniques de gestion des états utilisant $ _get Aug 08, 2025 pm 06:30 PM

Utilisez $ \ _ getToCaptureFilterAndNavigationStatefromTheUrlQuerystring, permettant à BookMarkeLinksandPreservingContextacRossrefreshsandNavigation.2.BuildUrlsdynamiquement UsingahelPerfunction

De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP Aug 03, 2025 am 11:12 AM

Toujours Treat $ \ _ GetDataaSuntRusted; 2.CheckifTheparameTerexistSusingisSet () OrnullCoAscing; 3.SanitizeBasedOnexPectecdType - UseFil Ter \ _validate \ _intForIntegers, htmlspecialchars () forStrings, andfilter \ _validate \ _booleanforbooleans; 4.ValidateAgainstBusinessl

Pièges et anti-motifs communs lorsque vous travaillez avec le superglobal $ _get Pièges et anti-motifs communs lorsque vous travaillez avec le superglobal $ _get Aug 08, 2025 pm 06:26 PM

ToujoursValidateAndesanitise $ _GeinputUsing filter_input () ou filter_var () henesCapeOutputwithhtmlSpecialChars () topvrachtxs.2.Check if ParamètresExistSing set () OrtherlulloraLarish Operator (??) toavoidwarnings.3.NverpAstenitiveorlarse USS

De $ _get pour demander des objets: comment les cadres modernes abstraits paramètres URL De $ _get pour demander des objets: comment les cadres modernes abstraits paramètres URL Aug 05, 2025 am 07:15 AM

Theshiftfromraw $ _getTostructuredRequestObjectSimprovestabilityByAllowingMockrequestSinsteadofrelyingonglobalstate.2.IntenhancesConsisténcyAndSafethroughbuilt-inMethoddsfordFaults, Sanitization, andvalidation.3TenableSframeworkflexibibilityHindlinlin

Déverrouiller les structures de données complexes avec des paramètres $ _get basés sur un tableau Déverrouiller les structures de données complexes avec des paramètres $ _get basés sur un tableau Aug 04, 2025 pm 02:22 PM

PhpautomaticaticPaSesesArray-likeQuerystringSInToStructured $ _getarrays, actilingcomplexdatahandling.1.use? Couleurs [] = rouge et couleurs [] = bluetogetIndexEdArrays.2.User? User [name] = ALICE & User [Âge] = 25ForassociativeRays.3.nestwith? Data0 [] = PHPFORMULSI

See all articles