recherche
Maisondéveloppement back-endtutoriel php7 autres erreurs communément commises par les développeurs PHP

7 More Mistakes Commonly Made by PHP Developers

7 autres erreurs communément commises par les développeurs PHP

De retour fin juin, Toptal, The Freelance Marketplace, a publié un article sur 10 erreurs les plus courantes commet les programmeurs PHP. La liste n'était pas exhaustive, mais elle a été bien écrite et a souligné que des pièges très intéressants devraient se méfier - même si je ne libère pas personnellement les erreurs comme très courantes.

Je vous encourage à lui donner une lecture approfondie - il a des informations vraiment précieuses que vous devez connaître - en particulier les huit premiers points. Il y a quelques jours, Anna Filina s'est étendue sur la liste avec sept nouvelles entrées. Bien que moins spécifique et commun, ses points ont toujours du poids et doivent être pris en compte lors du développement.

Les plats clés

  • Évitez d'utiliser l'extension MySQL décontenancée pour les bases de données SQL, car elle n'est pas sécurisée, peu fiable et manque de prise en charge des fonctionnalités SSL et MySQL modernes. Au lieu de cela, optez pour des alternatives comme MySQLI ou PDO, qui offrent une meilleure sécurité et plus de fonctionnalités.
  • Évitez de supprimer les erreurs dans votre code en utilisant l'opérateur @. Au lieu de cela, permettez aux erreurs d'être enregistrées et de les aborder en réparant votre code. Cela aide à maintenir l'intégrité de votre application et empêche les problèmes d'être ignorés ou négligés.
  • Soyez prudent de révéler trop d'informations sur votre configuration back-end, surtout si vous utilisez un cadre connu. Cela peut exposer votre application à des attaques potentielles si une vulnérabilité de sécurité dans ce cadre est découverte. N'oubliez pas non plus de supprimer les configurations de développement lorsque vous poussez à la production pour éviter un accès non autorisé.

7 Erreurs supplémentaires Les développeurs PHP font souvent

On m'a demandé par quelqu'un de Toptal de jeter un œil à sa liste et de contribuer potentiellement, et certains de nos abonnés sur les réseaux sociaux ont exprimé leur intérêt à voir la liste se poursuivre également, donc j'aimerais profiter de cette occasion pour Ajoutez quelques-unes de mes propres entrées à cette liste dont j'ai besoin à plusieurs reprises d'avertir les membres de mon équipe ou les abonnés.

1. Utilisation de l'extension MySQL

Cette nouvelle est assez ancienne, mais le nombre de développeurs inconscients du fait est inquiétant. Lorsque vous utilisez des bases de données SQL, en particulier MySQL, beaucoup trop de développeurs optent toujours pour l'extension MySQL. L'extension MySQL est officiellement obsolète. Il n'est pas sûr, peu fiable, ne prend pas en charge SSL et manque certaines fonctionnalités MySQL modernes. Il génère également des avis de dépréciation qui ne cassent pas votre application, ils apparaissent simplement en haut de votre application. Hilarante, ce que cela signifie, c'est qu'il est également possible de simplement Google pour tous les différents sites qui utilisent cette configuration en insécurité en recherchant simplement cela. Le monde de la blessure à ces applications est exposé à cause de ce gâchis est stupéfiant.

Au lieu d'utiliser MySQL, optez pour l'une des alternatives: MySQLI ou PDO. Par exemple, l'utilisation de mysqli est presque aussi simple que d'ajouter la lettre «I» à la fin des appels de l'API:

<span>$c = mysql_connect("host", "user", "pass");
</span><span>mysql_select_db("database");
</span><span>$result = mysql_query("SELECT * FROM posts LIMIT 1");
</span><span>$row = mysql_fetch_assoc($result);</span>

vs

<span>$mysqli = new mysqli("host", "user", "pass", "database");
</span><span>$result = $mysqli->query("SELECT * FROM posts LIMIT 1");
</span><span>$row = $result->fetch_assoc();</span>

C'est tout ce qu'il a fallu pour rendre la configuration incommensurablement plus sécurisée.

Vous devez cependant opter pour PDO. Plus à ce sujet au point 2.

2. N'utilisant pas PDO

Ne vous méprenez pas, MySqli est (littéralement) des générations avant l’ancienne extension MySQL. Il est tenu à jour, sécurisé, fiable et rapide. Cependant, c'est spécifique à MySQL. L'utilisation de l'OPD vous permettrait d'utiliser une syntaxe orientée objet merveilleusement pratique et vous préparerait à Tango avec d'autres bases de données SQL comme PostgreSQL, MS SQL, etc. De plus, PDO vous permettra d'utiliser des paramètres nommés, une fonctionnalité si utile, peu de gens peuvent imaginer aller à tout autre chose après en avoir profité. Enfin et surtout, il y a ceci: vous pouvez injecter des données récupérées directement dans un nouvel objet, qui est un gain de temps délicieux dans de grands projets.

3. Ne pas réécrire des URL

Un autre problème généralement ignoré et facile à résoudre. Les URL comme myapp.com/index.php?p=34&g=24 ne sont tout simplement pas acceptables de nos jours. En raison de son apparition incroyablement difficile d'écrire un bon guide de réécriture d'URL qui couvrirait chaque serveur et cadre, presque tous les frameworks ont un guide sur la façon de configurer des URL propres (Laravel, Phalcon, Symfony, Zend) et tout ce qui ne fait pas. T ne vaut pas la peine d'être utilisés - ils ne se soucient évidemment pas des pratiques modernes.

4. Suppression des erreurs

J'ai écrit à ce sujet dans un article précédent, mais cela vaut la peine d'être mentionné. Chaque fois que vous vous retrouvez à utiliser l'opérateur @, reconsidérez et abordez le problème sous un angle différent plus attentivement. Prenez-vous sur parole lorsque je dis que 20 lignes de code de boucle de chauffeur autour de la fonctionnalité d'une application sont meilleures qu'une seule ligne avec l'opérateur @ devant elle.

J'ai trouvé grâce à l'expérimentation personnelle qu'une bonne approche est celle que je préconise dans le post d'origine - transformez tous vos avis en erreurs fatales. S'assurer que rien est connecté aux journaux d'erreur parce qu'il n'y a littéralement que rien à enregistrer ne vaut mieux que de prétendre que Poop ne frappe pas le ventilateur en tenant @ devant vos yeux.

Nous avons récemment couvert certains modules complémentaires Heroku pour les applications PHP prêtes à la production, et l'une d'entre elles était l'excellent PaperTrail - un module complémentaire qui vous permet de pousser toutes les erreurs de votre application à leur backend pour une recherche, un regroupement et une élimination plus faciles sur; Donc, même si certaines erreurs se produisent, il est préférable de les laisser être enregistrées et de s'en débarrasser en réparant votre code, que de les faire taire et de jouer stupide devant vos utilisateurs.

5. Attribution dans des conditions

Même les développeurs expérimentés ont parfois un glissement du doigt et écrivent si ($ condition = 'value') {au lieu de if ($ condition == 'value') {. Nos mains glisseront, nos claviers n'enregistreront pas la pression, nous finirons par coller à partir d'une autre partie du code où l'affectation s'est réellement produite - cela se produit, et nous ne le découvrons généralement que lorsque nous exécutons l'application.

Il existe plusieurs façons d'éviter complètement ceci:

  1. Utilisez un IDE décent. Tout bon IDE (comme PHPStorm, par exemple) vous avertira des problèmes de «affectation en condition» lorsqu'il les détecte.
  2. Utilisez des «conditions Yoda». Vous les verrez dans de nombreux projets populaires, même les grands frameworks. En inversant la comparaison (comme dans, if ('value' = $ condition) {), les ides plus faibles remarqueront également le problème. Certains considèrent la syntaxe Yoda ennuyeuse et inutile, une bouée de sauvetage où il ne devrait y en avoir pas («être plus prudent avec votre code, bon sang»), mais pour chacun de siens - si cela aide quelqu'un, je suis tout à fait pour cela. Si nous étions tous élitistes, WordPress et Zend Framework n'existeraient pas.
  3. En gardant simplement cela à l'esprit, vous développerez un réflexe pour les yeux pour le vérifier à chaque fois que vous l'écrivez. Tout ce qu'il faut, c'est la pratique, mais cela arrive même aux meilleurs développeurs et c'est là que 1.
6. Être trop transparent

disant que cela pourrait susciter une controverse, mais voici de toute façon. Sauf si vous avez une confiance à 100% dans les développeurs du cadre ou que vous n'utilisez pas les applications critiques de l'entreprise à but haut de gamme, vous devez toujours vous efforcer d'obscurcir vos moyens back-end - et non de diffuser sur le cadre sur lequel votre application est basée Aide à prévenir les attaques, si une vulnérabilité de sécurité de ce cadre est découverte. Par exemple:

Si vous utilisez le traducteur Symfony2 et que vous avez un itinéraire avec une mise à niveau de paramètre {_locale} maintenant! http://t.co/jihxhb8mzt

— Jérémy Derussé (@jderusse) 15 juillet 2014

Dans ce tweet, la connaissance d'un problème grave d'injection de code est diffusée dans le domaine public. C'est génial si vous êtes au travail et que vous pouvez mettre à niveau immédiatement sans les problèmes de DevOps et que l'équipe se blottit en premier, mais pour la plupart des personnes et des entreprises qui utilisent Symfony, ce n'est pas le cas. Même si Symfony peut être mis à niveau via Composer (comme Ryan l'a mentionné dans les commentaires ci-dessous), il faut généralement un certain temps pour obtenir l'approbation dans les grandes équipes avec des environnements à plusieurs niveaux. Tous les sites Web utilisant cette approche de traductrice qui sont déclarées des utilisateurs de Symfony étaient (sont donc exposées à cette vulnérabilité jusqu'à ce qu'elles soient corrigées.

L'utilisation de Symfony dans l'exemple ci-dessus n'était que cela - un exemple. Des situations similaires sont apparues avec d'innombrables autres logiciels au fil des ans. À l'époque où j'utilise encore Zend Framework commercialement, nous avons également eu cela et nous avons subi une attaque en raison de cela. WordPress a eu sa part de gaffes de sécurité et nous savons à quel point un pourcentage de sites Web, ils alimentent. Ces choses se produisent, et parfois, l'open source et la transparence ne sont pas la meilleure approche lorsqu'ils traitent des applications qui portent la majorité de la source de revenus d'une entreprise.

7. Ne pas supprimer les configurations de développement

Dernier point mais non le moindre, la suppression de la configuration de développement doit être mentionnée. Très récemment (et c'est une coïncidence honnête que je mentionne à nouveau Symfony ici), CNET a subi une attaque en raison de ne pas supprimer leur configuration de développement.

uhmmm no: http://t.co/raqis1ycwq #security #symfony

- Marco Pivetta (@ocramius) 15 juillet 2014

CNET, l'un des plus grands sites de nouvelles technologiques au monde, est basé sur Symfony. Symfony, comme vous le savez peut-être, dispose de deux points d'entrée à votre application: app.php et app_dev.php. En pointant votre navigateur vers un, vous obtenez l'environnement de production. En montrant celui avec le suffixe _dev, vous obtenez évidemment la version de développement, qui dispose d'un débogueur, de données sensibles, etc. Que ce soit bon ou mauvais est un sujet de nombreuses discussions (encore une fois, grâce à Ryan pour l'avoir souligné), mais il est indéniable qu'il ouvre certains développeurs plus maladroits à des erreurs telles que celles que CNET souffraient. De plus, toutes les autres URL accessibles lorsque sur APP_DEV seront redirigées vers d'autres URL app_dev. En d'autres termes, ce n'est pas seulement la page d'index qui se lance en mode développement, c'est le site Web entier - dans le cas de CNET, c'est beaucoup d'accès.

Si vous suivez la discussion sur Twitter, cela devient très triste très triste - et ce qui est encore plus triste, c'est que cela aurait pu être évité dans une seconde travail:

  1. Les développeurs auraient pu supprimer app_dev.php des serveurs de production
  2. Les développeurs pourraient avoir des IPS listés blanches autorisées à accéder à app_dev.php, c'est ainsi que cela fonctionne par défaut à moins que vous ne dérangez ces restrictions.

L'une de ces approches aurait complètement empêché tous les problèmes. N'oubliez pas que lorsque vous poussez à la production, assurez-vous que votre configuration de développement est soit entièrement inaccessible, soit accessible uniquement à un ensemble de listes blanches d'IPS.

Conclusion

Que pensez-vous de cette liste? Couvre-t-il les aspects communs ou est-il trop ésotérique? Avez-vous des pièges plus courants que les trois postes au total n'ont pas mentionné? Faites-moi savoir dans les commentaires ci-dessous et nous mettrons à jour le message si vos conseils sont solides!

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
Travailler avec les données de session Flash dans LaravelTravailler avec les données de session Flash dans LaravelMar 12, 2025 pm 05:08 PM

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

Construisez une application React avec un Laravel Back End: Partie 2, ReactConstruisez une application React avec un Laravel Back End: Partie 2, ReactMar 04, 2025 am 09:33 AM

Il s'agit de la deuxième et dernière partie de la série sur la construction d'une application React avec un back-end Laravel. Dans la première partie de la série, nous avons créé une API RESTful utilisant Laravel pour une application de liste de base sur le produit. Dans ce tutoriel, nous serons Dev

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTCurl dans PHP: Comment utiliser l'extension PHP Curl dans les API RESTMar 14, 2025 am 11:42 AM

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Misque de réponse HTTP simplifié dans les tests LaravelMisque de réponse HTTP simplifié dans les tests LaravelMar 12, 2025 pm 05:09 PM

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

12 meilleurs scripts de chat PHP sur Codecanyon12 meilleurs scripts de chat PHP sur CodecanyonMar 13, 2025 pm 12:08 PM

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

Notifications à LaravelNotifications à LaravelMar 04, 2025 am 09:22 AM

Dans cet article, nous allons explorer le système de notification dans le framework Web Laravel. Le système de notification de Laravel vous permet d'envoyer des notifications aux utilisateurs sur différents canaux. Aujourd'hui, nous discuterons de la façon dont vous pouvez envoyer des notifications OV

Expliquez le concept de liaison statique tardive en PHP.Expliquez le concept de liaison statique tardive en PHP.Mar 21, 2025 pm 01:33 PM

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

PHP Logging: meilleures pratiques pour l&amp;#39;analyse du journal PHPPHP Logging: meilleures pratiques pour l&amp;#39;analyse du journal PHPMar 10, 2025 pm 02:32 PM

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d&#39;exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

See all articles

Outils d'IA chauds

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel