Maison  >  Article  >  développement back-end  >  Connaissez-vous les quatre principales stratégies de sécurité de PHP ?

Connaissez-vous les quatre principales stratégies de sécurité de PHP ?

怪我咯
怪我咯original
2017-07-05 10:32:461118parcourir

Cet article présente principalement la la sécurité du système de fichiers, la la sécurité des bases de données, la sécurité des données utilisateur et d'autres problèmes liés à la sécurité en PHP. Les amis dans le besoin peuvent s'y référer

1. Sécurité du système de fichiersSi php dispose des autorisations root et permet aux utilisateurs de supprimer des fichiers dans le script, alors l'utilisateur supprimera très probablement les fichiers système s'il soumet des données sans filtrage

<?php
// 从用户目录中删除指定的文件
$username = $_POST[&#39;user_submitted_name&#39;];
$userfile = $_POST[&#39;user_submitted_filename&#39;];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo "The file has been deleted!";
?>
Dans le code ci-dessus, en supposant que la valeur $userfile soumise par l'utilisateur est ../etc/, alors le répertoire /etc sera supprimé

Pour éviter les attaques du système de fichiers, la stratégie est la suivante
🎜>

N'accordez à PHP que des autorisations limitées

Les variables soumises par les utilisateurs doivent être surveillées et filtrées et ne peuvent pas contenir de caractères spéciaux tels que les chemins de fichiers
Essayez d'éviter d'utiliser PHP pour exploiter des fichiers (supprimer). Si cela est nécessaire, les utilisateurs peuvent Les fichiers supprimés doivent également être des noms aléatoires générés par le système et ne peuvent pas être contrôlés par les utilisateurs

2. Sécurité de la base de données
La sécurité de la base de données empêche principalement l'injection SQL, c'est-à-dire des attaques par injection SQL, des stratégies pour améliorer la sécurité de la base de données Comme suit :

Pas besoin d'utiliser le compte root ou le compte propriétaire de la base de données

Connectez-vous à la base de données, connectez-vous à la base de données pour limiter la IP de l'utilisateur qui se connecteUtilisez l'extension pdo de php pour empêcher efficacement l'injection SQL, en plus des aspects de sécurité Avantages, l'extension pdo de php présente de grands avantages en termes de performances
Veuillez vous référer à http://php.net/manual /en/pdo.prepared-statements.php
Crypter certaines informations sensibles, courantes Par exemple, le cryptage des mots de passe

3. Filtrage des données utilisateur
Le filtrage des données utilisateur peut empêcher les attaques XSS et CSRF.

Utilisez une liste blanche (la saisie utilisateur est un modèle fixe)

Par exemple, le nom d'utilisateur ne peut utiliser que des chiffres et des lettres, vous pouvez alors
utiliser la fonction ctype_alnum pour juger utilisez la fonction htmlentities ou
htmlspecialchars pour traiter la saisie de l'utilisateur. L'URL de saisie n'est pas autorisée. Les protocoles entrants non http L'authentification de l'utilisateur utilise un jeton (csrf)
http://htmlpurifier. org/ HTML Purifier est une solution open source efficace pour prévenir les attaques XSS,

4. Autres politiques de sécurité
Désactiver le rapport d'erreurs dans l'environnement en ligne (
error_reporting,dislay_erros , vous pouvez configurer le chemin error_log dans php.ini pour enregistrer les informations d'erreur, ce qui aidera à détecter d'éventuelles attaques des utilisateurs) Register Globals, une fonctionnalité obsolète (supprimée), n'utilisez pas la
fonctionnalité de citations magiques, ne activez-le, il a été supprimé dans PHP-5.4
Essayez d'utiliser la dernière version de PHP, la dernière version a été corrigée De nombreuses vulnérabilités et bugs de sécurité connus
Respectez strictement les stratégies ci-dessus dans le code, qui peuvent assurez-vous essentiellement que le code ne présentera pas trop de vulnérabilités de sécurité et pourra empêcher les attaques courantes.

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:
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