Table des matières
Échappez la sortie en fonction du contexte
Valider les entrées strictement
Utilisez des fonctions de filtre intégrées pour la désinfection
Évitez la contribution des utilisateurs bruts dans des contextes dangereux
Maison développement back-end tutoriel php Comment désinfecter la saisie des utilisateurs pour empêcher les XS dans PHP?

Comment désinfecter la saisie des utilisateurs pour empêcher les XS dans PHP?

Sep 25, 2025 am 05:19 AM
php xss

Pour empêcher les XSS dans PHP, désinfectez la saisie des utilisateurs et la sortie d'échappement en fonction du contexte à l'aide de htmlSpecialCars () pour HTML, JSON_ENCODE () pour JavaScript, et valider strictement avec Filter_Var () pour les types de données attendues, tout en évitant les fonctions déamorcées et en utilisant des en-têtes de sécurité de contenu-sécurité pour une protection supplémentaire.

Comment désinfecter la saisie des utilisateurs pour empêcher les XS dans PHP?

Pour éviter les scripts croisés (XSS) dans PHP, il est essentiel de désinfecter correctement les entrées utilisateur. L'objectif est de s'assurer que toutes les données reçues des utilisateurs - si les formulaires, les URL ou les API - ne sont pas interprétés comme du code exécutable par le navigateur. Voici comment vous pouvez désinfecter efficacement les entrées et sécuriser votre application.

Échappez la sortie en fonction du contexte

Ne comptez jamais uniquement sur la contribution désinfectée; Échappez toujours la sortie en fonction de l'endroit où il est utilisé dans la page. C'est le moyen le plus efficace d'empêcher les XS.

  • Utilisez htmlSpecialChars () lors de la sortie des données dans le contenu HTML:
  • echo htmlSpecialChars ($ userInput, ent_quotes, 'utf-8');
  • Pour les contextes JavaScript, utilisez json_encode () pour intégrer en toute sécurité les données:
  • var userdata == json_encode($userInput, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT); ?> ;
  • Lors de l'insertion de CSS ou d'URL, appliquez un filtrage ou une validation plus stricte, car htmlSpecialCars () ne protégera pas ces contextes.

Valider les entrées strictement

La désinfection fonctionne mieux aux côtés de la forte validation. Autorisez uniquement les types de données et les formats attendus.

  • Pour les nombres: utilisez filter_var () avec filter_validate_int ou filter_validate_float
  • Pour les e-mails: filter_var ($ e-mail, filter_validate_email)
  • Pour les chaînes: définir des modèles autorisés en utilisant des expressions régulières ou vérifiez une liste blanche de personnages
  • Rejeter les entrées qui ne correspondent pas aux attentes au lieu d'essayer de «nettoyer» tout

Utilisez des fonctions de filtre intégrées pour la désinfection

PHP fournit la fonction filter_var () pour désinfecter les types d'entrée courants:

  • Supprimer les balises et coder des caractères spéciaux: filter_var ($ entrée, filter_sanitize_string) (déprécié dans PHP 8.1, alors évitez dans de nouveaux projets)
  • Désinfecter les e-mails: filter_var ($ e-mail, filter_sanitize_email)
  • Url désinfectée: filter_var ($ url, filter_sanitize_url)

Dans les versions PHP modernes, préfèrent la validation manuelle et s'échapper sur les filtres obsolètes.

Évitez la contribution des utilisateurs bruts dans des contextes dangereux

N'insérez jamais les données utilisateur directement dans les attributs HTML, JavaScript, CSS ou SQL sans manipulation appropriée.

  • N'utilisez pas la saisie de l'utilisateur dans EVAL () , InnerHTML ou Blocks de script dynamique
  • Si vous devez accepter HTML (par exemple, à partir d'un éditeur de texte riche), utilisez une bibliothèque de confiance comme le purificateur HTML pour les éléments sûrs de la liste blanche et dépuisez les scripts malveillants
  • Définissez les en-têtes de politique de sécurité du contenu (CSP) pour réduire l'impact des XS potentiels

Fondamentalement, désinfecter avec prudence, valider strictement et s'échapper à fond à la sortie. S'appuyer sur une méthode ne suffit pas - la défense enracée maintient votre application plus sûre.

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Comment vérifier les autorisations de fichiers dans PHP? Comment vérifier les autorisations de fichiers dans PHP? Sep 22, 2025 am 06:27 AM

UseFilePerms () togetFilePermissionsAsanIntegerAndFormatisingSprintf ('% o') todisplayunix-stylepermisessions lisilit0644

Comment implémenter un modèle singleton en PHP? Comment implémenter un modèle singleton en PHP? Sep 25, 2025 am 12:27 AM

Le modèle Singleton garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour les scénarios où un seul objet coordonne le fonctionnement du système, tels que les connexions de base de données ou la gestion de la configuration. 2. Sa structure de base comprend: les instances de stockage d'attribut statiques privées, les constructeurs privés empêchent la création externe, les méthodes de clonage privé empêchent la copie et les méthodes statiques publiques (telles que getInstance ()) pour obtenir des instances. 3. Obtenez une instance unique dans PHP en appelant la méthode GetInstance () et renvoie la même référence d'objet, peu importe le nombre de fois où il est appelé. 4. Selon le modèle de demande PHP standard, la sécurité des threads n'est pas nécessaire pour être prise en compte, mais les problèmes de synchronisation doivent être prêts à prêter attention dans des environnements à long terme ou multi-thread, et PHP lui-même ne prend pas en charge le mécanisme de verrouillage natif. 5. Bien que les singletons soient utiles,

Comment obtenir des arguments en ligne de commande dans un script PHP? Comment obtenir des arguments en ligne de commande dans un script PHP? Sep 22, 2025 am 06:19 AM

Utilisez $ argv et $ argc pour obtenir des paramètres de ligne de commande PHP. $ argc est le nombre de paramètres et $ argv est le tableau des paramètres. Par exemple, dans phpsscript.phphelloworld, $ argv = [script.php ', «bonjour», «monde»]; Utilisez $ argv [1] et autres pour accéder aux paramètres spécifiques; Utilisez getOPT () pour gérer les options courtes (-f) et les longues options (--fichier) dans des scénarios complexes.

Comment utiliser l'opérateur de fusion nul (??) en PHP? Comment utiliser l'opérateur de fusion nul (??) en PHP? Sep 25, 2025 am 01:28 AM

Réponse: L'opérateur de fusion vide de PHP (??) est utilisé pour vérifier si une variable ou une clé de tableau existe et n'est pas nul. S'il est vrai, il renvoie sa valeur, sinon il renvoie la valeur par défaut. Il évite l'utilisation de longs chèques ISSet (), convient pour gérer les variables et les clés de tableau non définies, telles que $ username = $ userInput ?? 'invité, et prend en charge les appels de chaîne, tels que $ thème = $ usertheme?

Comment obtenir des paramètres URL en PHP? Comment obtenir des paramètres URL en PHP? Sep 24, 2025 am 05:11 AM

Utilisez $ _get pour obtenir des paramètres URL, tels que? Name = John & Age = 25; Vérifiez l'existence via les opérateurs de fusion ISSET ou vide, et filtrez et vérifiez les données avec filter_input pour assurer la sécurité.

Comment créer un fichier zip dans PHP? Comment créer un fichier zip dans PHP? Sep 22, 2025 am 06:06 AM

USETHEZIPACHIVIVECLASSTOCREATEAZIPFILEINPHPBYInSTANTIATIAGETHEOBJECT, OpenTheRearchveWithOpen (), AddingFilesViaAddFile () OraddFromString (), et ClosingItWithClose () TOSAVE; toujoursCheckOpen () returnValueNenSurewritePerMissions.

Comment créer un objet JSON en PHP? Comment créer un objet JSON en PHP? Sep 22, 2025 am 04:13 AM

Utilisez la fonction json_encode () pour convertir des tableaux ou des objets PHP en chaînes JSON. Par exemple, le tableau associatif ["nom" => "John", "Age" => 30, "City" => "Newyork"] Sortie {"Name": "John", "Age": 30, "City": "Newyork &

Quelle est la différence entre HTMLSpecialChars et Htmlentities dans PHP? Quelle est la différence entre HTMLSpecialChars et Htmlentities dans PHP? Sep 23, 2025 am 01:11 AM

HTMLSpecialChars échappe uniquement à des métacharacteurs HTML tels que & "', qui convient à la sortie sûre conventionnelle; les HTMLentités convertissent tous les caractères mappables (tels que Éñ ©) en entités HTML, ce qui convient pour gérer le texte non ASCII et les scénarios hautement compatibilité.

See all articles