Maison > développement back-end > tutoriel php > Comment assurer la sécurité du code des fonctions PHP ?

Comment assurer la sécurité du code des fonctions PHP ?

PHPz
Libérer: 2024-04-30 14:45:02
original
943 Les gens l'ont consulté

Afin d'assurer la sécurité du code de fonction PHP, il est recommandé de suivre les bonnes pratiques suivantes : valider les entrées utilisateur, encoder les données de sortie, limiter l'exécution des fonctions, désactiver les fonctions inutiles, utiliser des requêtes paramétrées et utiliser des frameworks de sécurité. Dans des cas pratiques, lors de la vérification du nom soumis par l'utilisateur, l'entrée doit être filtrée et son format vérifié pour empêcher l'injection de code malveillant.

如何保障 PHP 函数的代码安全?

Comment assurer la sécurité du code des fonctions PHP

Dans le développement PHP, assurer la sécurité du code des fonctions est crucial. Voici quelques bonnes pratiques pour vous assurer que votre code ne peut pas être exploité de manière malveillante :

Validation des entrées

Validez les entrées de l'utilisateur pour empêcher l'injection SQL, les scripts intersites (XSS) et autres attaques. Les méthodes suivantes peuvent être utilisées :

  • Fonction filter_input() : Valider l'entrée à l'aide d'un type de filtre prédéfini.
  • Fonction htmlspecialchars() : Convertir les caractères spéciaux en entités HTML.
  • Expressions régulières : Vérifiez que l'entrée correspond à un modèle spécifique.

Exemple :

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
Copier après la connexion

Output Encoding

Encodez les données de sortie pour empêcher les attaques XSS. Les méthodes suivantes peuvent être utilisées :

  • Fonction htmlspecialchars() : Convertir les caractères spéciaux en entités HTML.
  • Fonction json_encode() : Encodez les données au format JSON.
  • Fonction urlencode() : Encodez les données dans un format compatible URL.

Exemple :

echo htmlspecialchars($output);
Copier après la connexion

Limiter l'exécution de la fonction

Utilisez les fonctions PHP set_time_limit() et ini_set() pour définir le temps d'exécution et la limite de mémoire de la fonction afin d'éviter les boucles infinies ou les attaques par épuisement des ressources.

Exemple :

set_time_limit(30);
ini_set('memory_limit', '128M');
Copier après la connexion

Désactivez les fonctionnalités inutiles

Désactivez les fonctionnalités PHP inutiles telles que Allow_url_fopen() et Allow_url_include() pour réduire la surface d'attaque.

Exemple :

ini_set('allow_url_fopen', 'Off');
ini_set('allow_url_include', 'Off');
Copier après la connexion

Utilisez des requêtes paramétrées

Utilisez des requêtes paramétrées au lieu de la concaténation de chaînes pour exécuter des requêtes de base de données afin d'empêcher les attaques par injection SQL.

Exemple :

$stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
Copier après la connexion

Utilisez un framework de sécurité

Envisagez d'utiliser un framework de sécurité PHP tel que CodeIgniter ou Symfony, qui fournit des fonctionnalités de sécurité et des bonnes pratiques prêtes à l'emploi.

Cas pratique

Scénario : Vérifiez le nom soumis par l'utilisateur via le formulaire.

Code :

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

if (empty($name)) {
    throw new InvalidArgumentException("Name cannot be empty.");
}

if (!preg_match('/^\w+$/', $name)) {
    throw new InvalidArgumentException("Name can only contain alphanumeric characters.");
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal