


De l'entrée brute aux données sûres: le flux de travail définitif pour le superglobal $ _get de PHP
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.
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.

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:

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.

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 comme123abc
comme123
. 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 '<h1> Recherche:'. htmlSpecialChars ($ search, ent_quotes, 'utf-8'). '</h1>';
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 ['q'] ?? '')> 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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

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

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

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

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

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

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