Maison >développement back-end >tutoriel php >Quelques problèmes de sécurité du développement PHP compilés

Quelques problèmes de sécurité du développement PHP compilés

不言
不言original
2018-04-04 14:24:542585parcourir

Collectez quelques problèmes de sécurité du développement PHP



PHP offre aux développeurs une grande flexibilité, mais cela entraîne également des risques de sécurité potentiels. Je dois résumer ici les problèmes passés dans un avenir proche et ajouter quelques sentiments de mon propre développement pour le résumer.





Introduction

Lors du développement d'un service Internet, vous devez toujours garder à l'esprit la notion de sécurité et reflété dans le code développé. Le langage de script PHP ne se soucie pas des problèmes de sécurité, surtout pour la plupart des développeurs inexpérimentés. Chaque fois que vous parlez d'une transaction impliquant des questions d'argent, vous devez accorder une attention particulière aux considérations de sécurité, telles que le développement d'un forum ou d'un panier d'achat.


Points généraux de protection de la sécurité

Ne faites pas confiance au formulaire

Pour la vérification générale du front-end Javascript, car le comportement de l'utilisateur ne peut pas être connu. Par exemple, la désactivation du moteur JavaScript du navigateur POSTera des données malveillantes sur le serveur. La vérification doit être effectuée côté serveur, en vérifiant les données transmises à chaque script php pour éviter les attaques XSS et les injections SQL


Ne faites pas confiance à l'utilisateur

Partez du principe que chaque données reçues par votre site Web Chaque élément de données contient du code malveillant et des menaces cachées Chaque élément de données doit être nettoyé


Fermer les variables globales

Effectuez la configuration suivante dans le php.ini. fichier :

register_globals = Off



Si cette option de configuration est activée, il y aura de grands risques de sécurité. Par exemple, il existe un fichier de script process.php qui insérera les données reçues dans la base de données. Le formulaire pour recevoir les données saisies par l'utilisateur peut être le suivant :

<input name="username" type="text" size="15" maxlength="64">


De cette façon, après avoir soumis les données à process.php, php enregistrera une variable $username et soumettra ces données de variable à process.php. En même temps, une telle variable sera définie pour toute requête POST ou GET. paramètres. Si l'initialisation ne s'affiche pas, le problème suivant se produira (référence : http://www.lai18.com/content/434606.html)


<?php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}
?>


Ici, il est supposé que la fonction Authenticated_user doit déterminer la valeur de la variable $authorized. Si la configuration Register_globals est activée, alors n'importe quel utilisateur peut envoyer une demande pour définir la valeur de la variable $authorized sur n'importe quelle valeur à contourner. cette vérification.

Toutes ces données soumises doivent être obtenues via le tableau global intégré prédéfini de PHP, notamment $_POST, $_GET, $_FILES, $_SERVER, $_REQUEST, etc., où $_REQUEST est un $_GET/$ _POST/$_COOKIE est une variable commune de trois tableaux. L'ordre par défaut est $_COOKIE, $_POST, $_GET.


Options de configuration de sécurité recommandées

Définissez error_reporting sur Off : ne pas exposer les informations d'erreur aux utilisateurs. Vous pouvez le définir sur ON pendant le développement

Définissez safe_mode sur Off.

Définissez register_globals sur Off

Désactivez les fonctions suivantes : system, exec, passthru, shell_exec, proc_open, popen

Définissez open_basedir sur /tmp, afin que les informations de session puissent être autorisations stockées et définir un répertoire racine de site Web distinct

 ; expose_php est défini sur Off

 ;allow_url_fopen est défini sur Off

 ;allow_url_include est défini sur Off


Attaque par injection SQL

Pour les instructions SQL qui font fonctionner la base de données, une attention particulière doit être accordée à la sécurité, car les utilisateurs peuvent saisir des instructions spécifiques qui entraînent l'exécution des instructions SQL d'origine. changer leurs fonctions. Semblable à l'exemple suivant :




Lecture approfondie


La série d'articles techniques "PHP Security Programming Series" est compilée et collectée

La collection PHP Security Programming Series recueille des connaissances sur la programmation de sécurité PHP et fournit une référence d'apprentissage pour la programmation de sécurité PHP

1discuz php empêche la fonction d'injection SQL

Méthode 2php pour empêcher les attaques XSS

3PHP programmation sécurisée : échapper à la sortie

Programmation sécurisée 4PHP : filtrer les entrées de l'utilisateur

Programmation sécurisée 5PHP : convivialité et données suivi

6 Programmation sécurisée PHP : Ne laissez pas les personnes non pertinentes voir le message d'erreur

Programmation sécurisée 7PHP : sécurité de register_globals

Programmation sécurisée 8PHP : quelques principes de conception de la sécurité des sites Web

Programmation de sécurité 9PHP : à propos de l'usurpation de formulaire soumission

10Programmation sécurisée PHP : usurpation de requête HTTP

11Programmation sécurisée PHP : ne pas exposer la base de données Autorisations d'accès

12 Programmation sécurisée PHP : Défense contre la falsification de requêtes intersites CSRF

13 Programmation sécurisée PHP : formulaires et Sécurité des données

14 Programmation de sécurité PHP : attaques issues de la sémantique des URL

15 Programmation de sécurité PHP : défense contre Attaques par téléchargement de fichiers

Programmation sécurisée 16PHP : défense contre les attaques de scripts intersites

Programmation sécurisée 17PHP : session corrigée pour obtenir une session légitime

18Programmation sécurisée PHP : empêcher l'injection SQL

19Programmation sécurisée PHP : l'exposition aux cookies mène à la session détournement d'avion

20Programmation sécurisée PHP : évitez l'exposition du code source

21Programmation sécurisée PHP : faites attention aux URL de porte dérobée

22Programmation sécurisée PHP : défense contre le détournement de session

23Programmation sécurisée PHP : attaque par force brute

Programmation sécurisée 24PHP : reniflage de mots de passe et attaques par relecture

Programmation sécurisée 25PHP : pratiques sûres pour mémoriser l'état de connexion

Programmation sécurisée 26PHP : injection de commandes Shell

Programmation sécurisée 27PHP : risques liés à l'ouverture de fichiers distants

28Programmation sécurisée PHP : vulnérabilité de devinette du répertoire de fichiers

Programmation sécurisée 29PHP : empêcher la manipulation des noms de fichiers

30Programmation sécurisée PHP : le fichier contient des attaques par injection de code

31Programmation sécurisée PHP : meilleure sécurité des données de session

32PHP Secure Programmation : Sécurité du code source de l'hébergement mutualisé

Programmation de sécurité 33PHP : injection de données de session

Programmation de sécurité 34PHP : hôte navigation dans le répertoire de fichiers

Programmation sécurisée 35PHP : mode sans échec PHP

La sécurité 36php utilise $ pour obtenir la valeur directement à la place de $_GET Caractère s'échappant

37stratégie de prévention des vulnérabilités PHP pour créer un Web haute performance

38Quelle attaque XSS ? PHP empêche la fonction d'attaque XSS

39 Méthodes pour analyser PHP pour empêcher la soumission répétée de formulaires

40php security dog ​​​​vison à queue

41PHP empêche la soumission de formulaires inter-domaines

42php empêche l'explication détaillée et la prévention de l'injection SQL

43php Empêcher les exemples de code d'injection SQL

44php Empêcher l'analyse d'exemples d'injection SQL et plusieurs expressions régulières d'attaque courantes

45PHP Sécurité : empêchez l'exposition de votre code source ou de vos informations de configuration importantes

46 Un exemple simple de PHP empêchant la soumission répétée de données dans les publications

47Méthode PHP pour empêcher la soumission de données falsifiées à partir d'une URL

48Résumé PHP de plusieurs méthodes courantes pour empêcher la soumission répétée de formulaires

Méthode 49php pour empêcher la soumission de données falsifiées à partir de l'URL de la barre d'adresse

Méthode 50php pour empêcher la soumission de formulaires à distance hors site

51 Exemples de paramètres de pagination de filtre PHP pour empêcher l'injection SQL

52 Attaques de sécurité PHP et solutions pouvant être rencontrées lors de l'installation en mode Apache

53 Sécurité du système de fichiers et mesures préventives pour la sécurité PHP

54 Sécurité du système de fichiers pour la sécurité PHP - Problème de caractère nul

55 Sécurité de la base de données de sécurité PHP - Injection SQL et mesures préventives

56 Introduction à la sécurité PHP et principes généraux

Sécurité 57PHP : attaques possibles et solutions lors de l'installation en mode CGI

Sécurité 58PHP : soumise par l'utilisateur data

59PHP Security Database Security - Conception, connexion et cryptage

60PHP Security Magic Quotes - Que sont les citations magiques et comment les utiliser

61PHP Security Hidden PHP Script Extension

62PHP Security Use Register Globals

63Rapport d'erreurs de sécurité PHP

64méthodes PHP pour empêcher l'actualisation malveillante et l'actualisation des tickets

65php Résumé des méthodes pour empêcher l'actualisation du site Web

66Fulnérabilités de sécurité courantes du site Web PHP et résumé des mesures préventives correspondantes

Recommandations associées :

Résumé connexe des problèmes de sécurité dans PHP development_PHP tutoriel

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