J'ai récemment eu le bonheur de reprendre un site Web (basé sur Joomla!, on commence mal) développé par une prestataire freelance. Après deux jours d'exploration, mes plus belles découvertes :
– Tout le code dans une seule fonction par classe : check.
– Aucun objet, aucune fonction en dehors du strict nécessaire pour Joomla! : check.
– Des boucles de plus de 500 lignes et un usage sur-abusif du
continue
et
break
: check.
– Des conditions TOUTES formées sur le modèle :
if (quelque chose) { // RIEN } else { faire_un_truc(); }
: check.
– Une sanitization absente, tout pris dans
$_REQUEST
: check.
– Toutes les requêtes SQL en dur dans le code, aucune requête préparée même celles répétées des milliers de fois : check.
– À peu près 200 tables pour une application, le tout sans AUCUNE contrainte d'intégrité (hormis un bête
UNIQUE
sur l'ID de chaque table) : check.
– Utiliser l'obsolète l'API
mysql_
à l'ère de PDO : check.
Pour toutes ces raisons, plus celles à suivre : PEBKAC.
Une personne vient de me demander si supprimer un e-mail envoyé à plusieurs personnes efface également le message de la boîte de réception des autres destinataires. PEBKAC.
Devant réaliser un formulaire de recherche en PHP, je pense naturellement à sécuriser chaque paramètre de mon
$_POST
pour éviter les vilains pirates et leurs injections SQL.
Pour ce faire, j'ai tout naturellement utilisé… la fonction
htmlentities()
, ce qui a eu pour effet de transformer ma recherche sur "le métro" en recherche sur "le métro", qui bien sûr n'a renvoyé aucun résultat.
Pour avoir oublié la fonction
quote()
de PDO, et pour avoir utilisé une fonction destinée uniquement à l'affichage pour de l'échappement SQL : PEBKAC.
Il y a quelque temps, nous avons eu une panne générale de réseau dans l'entreprise où je travaille. Aucun accès à Internet, aux serveurs, plus rien. Après vérification des switchs, tous sont en bon état de marche. Nous nous résignons à débrancher chaque prise RJ45 une par une pour identifier le problème.
Nous trouvons enfin notre coupable : un téléphone PoE (alimentation par le câble RJ45), qui dispose de deux prises : une pour faire la jonction prise murale > téléphone, et une autre pour relier le téléphone à l'ordinateur. Ainsi, une seule prise murale par couple est nécessaire.
Vous vous en doutez, le coupable n'est pas vraiment le téléphone mais plutôt l'utilisateur qui, souhaitant « faire le ménage », avait tout débranché puis rebranché. Mais n'ayant aucune notion de réseau, il a naturellement relié les deux prises RJ45 du téléphone à deux prises murales distinctes.
En a résulté une belle packet storm, et deux heures de perdues à rechercher la cause de ce problème. PEBKAC.
Développeur PHP en apprentissage, je suis chargé, entre autres, de la maintenance d'un certain nombre d'applications. Ticket de bug, corrections, tests sur le serveur de développement, et tout fonctionne.
Je rédige un rapide e-mail à l'utilisateur pour l'informer de la correction. Peu après, je reçois un nouveau ticket : ça ne fonctionne toujours pas. C'est étrange… Je teste de nouveau sur trois autres machines, et "chezmoicamarche.org".
Ah oui, à un détail près : quand on commit ses modifications sur le serveur de production, tout de suite, ça marche beaucoup mieux. PEBKAC.
Dans la boîte ou je travaille, nous avons récemment mis à jour le client mail intégré sur tous les postes. À la suite de cette mise à jour, nous avons reçu quelques appels d'utilisateurs ne trouvant pas le client en question sur leur Bureau.
Étrange, un raccourci a pourtant été créé automatiquement à l'installation, et après vérification il est bien présent.
Ah oui : le fond de l'icône est gris et non plus rouge. Forcément, ça change tout. PEBKAC.
Dans l'entreprise où je travaille, le service informatique met à disposition des utilisateurs plusieurs PC portables, notamment pour les salles de réunion non équipées en informatique.
J'ai reçu un appel concernant l'un de ces ordinateurs, car « Skype ne marche pas ». Une fois sur place, je constate que le PC n'est même pas connecté à Internet. Logique, le réseau Wi-Fi de l'entreprise est équipé d'un portail captif, et une procédure explique clairement comment procéder pour se connecter. Remarquant ladite procédure (un PDF) ouverte en arrière-plan sur l'écran de l'utilisateur, je lui demande si elle a été bien suivie. Réponse : « Heu… Non, il fallait ? ».
Mais non voyons, ça se saurait si les documentations étaient utiles. PEBKAC.
Lorsqu'on lit un dépliant recto/verso, on a le réflexe de tourner la feuille horizontalement pour passer d'un côté à l'autre, comme les pages d'un livre. Et bien manifestement, cela n'est pas évident pour tout le monde : je viens de recevoir un e-mail de la personne chargée d'assembler et d'imprimer une publication, recto/verso. Il me dit :
« Tout est nickel, par contre il y a un problème... il faut retourner la feuille vers le bas (comprendre verticalement). Mais bon, c'est pas grave hein ?... ».
Non... Enfin ça n'aurait pas été grave s'il avait préféré faire une impression de test, plutôt que d'en imprimer directement 3000 exemplaires. PEBKAC.
Sur le serveur dédié que je possède, je viens de retrouver environ 14 Go de logs.
Improbable me direz-vous ? Et bien, c'est ce que je pensais aussi. Jusqu'à ce que je réalise que j'avais laissé un serveur Squid (proxy Linux) installé, configuré par défaut, sans mot de passe et sans aucune restriction, et ce pendant plus d'un an.
J'ai donc eu la joie de voir l'IP de mon serveur apparaître dans les « top proxies », et mon nom de domaine se balader sur Internet. Pour cette piètre performance de sysadmin : PEBKAC.
Ce matin dans mon service, une utilisatrice se plaint d'un problème avec son mot de passe :
« J'ai changé mon mot de passe, ça a marché une fois, mais maintenant ni le nouveau mot de passe ni l'ancien (sans déc' ?) ne fonctionnent. Je pense que mon ordinateur va passer par la fenêtre ! »
Et bien, heureusement que nous sommes en novembre et que les fenêtres sont fermées. Car après vérification du technicien, le nouveau mot de passe marchait parfaitement. Elle n'a pas pensé à une erreur de saisie de sa part avant d'appeler le service informatique à l'aide. PEBKAC.