


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:
- 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.
- 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.
- 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.
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:
- Les développeurs auraient pu supprimer app_dev.php des serveurs de production
- 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!

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-

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

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

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' =>

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é

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

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

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


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

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é
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
Outils de développement Web visuel

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