Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Pour montrer nos projets aux clients, nous avons un serveur dédié où nous mettons leurs dossiers, pour qu'ils puissent se faire une idée de chez eux. Cette machine fait tourner XAMPP, ce qui fait qu'il fait fonctionner les pages en PHP et prend en charge les bases de données MySQL.

Mon patron et néanmoins ami a trouvé (et s'en est vanté), après avoir trituré pendant plusieurs heures les options de XAMPP, ce détail très intéressant : pour montrer au client que l'on a bien travaillé et codé, il suffit de lui montrer le code PHP en texte brut. Et il m'a mis au défi de faire en sorte qu'il ne soit plus lisible, d'autant plus que… il ne sait pas comment il a fait lui-même. Bref, au final, le serveur Web était en panne.

Il ne m'a fallu que 30 secondes pour retrouver le menu qui stoppe l'interprétation de PHP par le serveur, malgré le fait que je ne connaissais pas XAMPP avant ça. PEBKAC.
PEBKAC #7794 proposé par Aaargh!!! le 15/05/2013 | 21 commentaires | 👍🏽 👎🏽 +181
<HorsSujet>Je me suis toujours demandé si le type qui a inventé le mot « néanmoins » avait subi une ablation nasale.</HorsSujet>

Montrer le code PHP en texte brut ? Plus lisible ? On parle bien de texte brut sans coloration syntaxique là ?
Commentaire #92550 écrit par Skefrep le 15/05/2013 à 10h03 | 👍🏽 👎🏽
C'était dans une autre vie que je faisais du PHP (la v3 venait de sortir), mais il me semble me rappeler qu'il y avait une option qui permettait d'afficher les sources des pages. De mémoire, il suffisait ensuite de remplacer .php par .phps dans l'URL. Quelqu'un pour (con|in)firmer ?
Commentaire #92552 écrit par Acné le 15/05/2013 à 10h15 | 👍🏽 👎🏽
Le remplacer dans l'url ne suffit pas (heureusement, ce serait une faille de sécurité plus que monstrueuse).

Il faut que tu aies un fichier source enregistré en .phps sur ton serveur, dans ce cas le code n'est pas interprété mais présenté tel quel en utilisant une coloration syntaxique.
Je ne sais même pas si cette fonctionnalité est toujours présente dans les dernières versions de php, ne l'ayant jamais utilisée...
Commentaire #92555 écrit par Morrock le 15/05/2013 à 10h29 | 👍🏽 👎🏽
Oui, heureusement que ça ne suffit pas ! Certains sont bien contents de pouvoir cacher leur code... C'est pour ça que j'ai dit qu'il y avait une option, sous-entendu qu'il fallait l'activer. Note aussi l'utilisation du mot ensuite dans la seconde phrase.

Sinon, je ne suis pas d'accord pour dire que c'est une faille de sécurité. La sécurité d'un système ne devrait pas se baser sur l'indisponibilité du source, mais sur une architecture solide et un code propre. Mais bon, ceci est un autre débat.
Commentaire #92556 écrit par Acné le 15/05/2013 à 10h42 | 👍🏽 👎🏽
Oups, pardon, je n'avais pas noté le «ensuite». Mea Culpa.

Du coup, nous sommes d'accord, ce n'est pas une faille de sécurité. C'est pour ça que j'ai dit «ce serait». Note aussi que je parlais d'une faille de sécurité dans l'unique cas où le remplacement de l'url serait suffisant.

Nous sommes également d'accord sur le fait que la sécurité d'un système ne doit pas se baser sur l'indisponibilité des sources. Par contre l'affichage d'un code en production peut différer des sources telles qu'elles sont exploitées.
Dans le cas où le remplacement par .phps serait suffisant, il serait très simple d'accéder aux informations insérées dans les sources... au hasard à un petit fichier config.php (ou autre, mais ce nom est fréquemment utilisé) qui pourrait contenir les codes d'accès aux bases de données par exemple. Voilà pourquoi j'ai appelé ça une faille de sécurité. Ca ne veut pas dire que la sécurité d'un système doit se baser sur cet unique élément.
Commentaire #92558 écrit par Morrock le 15/05/2013 à 11h01 | 👍🏽 👎🏽
La coloration syntaxique, l'indentation, les retours à la ligne... c'est que des fioritures, on peu très bien s'en passer et néanmoins comprendre le code.

Pour ce qui est de l'étymologie de néanmoins, Geist passera te l'expliquer. S'il n'est pas libre, son assistant Grammar Nazi devrait pouvoir prendre le relais.
Commentaire #92561 écrit par Link le 15/05/2013 à 11h20 | 👍🏽 👎🏽
Non, pas d'ablation nasale, sinon ce serait nezanmoins.

En fait, c'était une tentative pour introduire les nombres négatifs via le langage courant auprès du petit peuple, qui pensait que c'était de la sorcellerie : moins que zéro, soit moins que rien, soit moins que néant avec un peu d'archaïsme. Malheureusement, c'était sans doute un peu trop subtil, personne n'a rien capté, et le sens a été largement dévié.
Commentaire #92572 écrit par Geist le 15/05/2013 à 12h01 | 👍🏽 👎🏽
Ah oui, j'avais oublié qu'il était habituel d'avoir les identifiants au milieu du code... Ce n'est définitivement pas une bonne idée de permettre la diffusion du source en PHP donc.

Aujourd'hui, quand je code, les données sensibles sont directement diffusées par le serveur, qui a lui-même un keystore sécurisé par une clef donnée au lancement. Encore un truc qui ne me fait pas regretter le PHP !
Commentaire #92574 écrit par Acné le 15/05/2013 à 12h06 | 👍🏽 👎🏽
Oui, et le subtil sous-entendu fait par Acné est qu'il est complètement crétin de stocker un mot de passe de DB dans un fichier de config mêlé aux sources de l'application.

Et accessoirement, qu'il est aussi crétin de permettre de mélanger des sources confidentielles et du contenu statique dans un même répertoire, avec comme seule séparation une fragile directive de configuration qui peut péter a tout moment.

Mais pas de panique, les vrais systèmes de contenus dynamiques l'ont compris depuis longtemps. Et les vrais SGDB n'ont pas besoin d'un mot de passe pour authentifier un utilisateur sur une connexion locale.
Commentaire #92576 écrit par b0fh le 15/05/2013 à 12h11 | 👍🏽 👎🏽
Perso, avec coloration syntaxique j'ai déjà du mal, alors sans...
En même temps je touche à du code deux fois par an, mais j'pense que pour un client c'est la même.

EDIT: Marrant, request time-out mais commentaire posté.
Commentaire #92579 écrit par Kom.ic le 15/05/2013 à 12h29 | 👍🏽 👎🏽
D'où l'intérêt d'utiliser un framework propre, qui sépare la config des sources. Genre Symfony2 (totalement au hasard, yen a plein d'autres).
Commentaire #92580 écrit par neeko le 15/05/2013 à 12h30 | 👍🏽 👎🏽
C'est bien beau de croire que tout le monde sera capable de sécuriser correctement son serveur et de pouvoir choisir sans autre contrainte une application sécurisée, mais ce n'est malheureusement pas le cas dans les faits.

De nombreux outils php largement utilisés utilisent un fichier de configuration situé à même les sources de l'application (au mieux dans un sous-répertoire de celle-ci), et peu d'utilisateurs ont les compétences, et surtout le temps d'aller modifier le fonctionnement de l'application lorsqu'ils la déploient.
Le choix se fait plus souvent sur les fonctionnalités de l'application plutôt que sur son fonctionnement interne.

Ainsi, aussi crétin soit-il de stocker un mot de passe dans un fichier de config, ou de laisser une authentification basique par mot de passe sur son SGBD, et aussi performants soient certains frameworks ou gestionnaires de contenus, il n'en reste pas moins de nombreux (très nombreux) cas où le seul accès aux sources php (par le biais du phps) serait une grave atteinte à la sécurité du système.

Bref, je suis d'accord avec tout ce que vous dîtes dans l'absolu. Mais en pratique, il faut relativiser...
Commentaire #92600 écrit par Morrock le 15/05/2013 à 13h55 | 👍🏽 👎🏽
Mais a quoi bon voir le code source, pour des clients qui risque de pas comprendre ? A frimer ? Ils veulent que ça marchent. Qu'on leur montre du HTML ou du PHP, ils ne feront pas la différence, et vont dire "bah, c'est trop compliquer".
Commentaire #92602 écrit par qwerty le 15/05/2013 à 14h20 | 👍🏽 👎🏽
Sinon, ils se diront "Ouah !!! Qu'est-ce qu'ils ont bien travaillé !!!", surtout si le code ressemble à ça :
<?php  eval(base64_decode("cHJpbnQoIkJvbmpvdXIgbGUgbW9uZGUiKTsKCnByaW50ICJwcmludCgpIGZvbmN0aW9ubmUgYXVz
 c2kgc2FucyBsZXMgcGFyZW50aMOoc2VzLiI7CgpwcmludCAiQ2UgcHJpbnQoKSBzZQpyw6lwYXJ0
 aXQgc3VyIHBsdXNpZXVycyBsaWduZXMuIElsIGFmZmljaGUgYXVzc2kgbGVzCm5vdXZlbGxlcyBs
 aWduZXMiOwoKcHJpbnQgIkNlIHByaW50KCkgc2VcbnLDqXBhcnRpdCBzdXIgcGx1c2lldXJzIGxp
 Z25lcy4gSWwgYWZmaWNoZSBhdXNzaSBsZXNcbm5vdXZlbGxlcyBsaWduZXMiOwoKcHJpbnQgIkwn
 w6ljaGFwcGVtZW50IGRlIGNhcmFjdMOocmVzIHNlIGZhaXQgOiBcImNvbW1lIGNlY2lcIi4iOwoK
 Ly8gVm91cyBwb3V2ZXogdXRpbGlzZXIgZGVzIHZhcmlhYmxlcyBhdmVjIHByaW50CiRmb28gPSAi
 Zm9vYmFyIjsKJGJhciA9ICJiYXJiYXoiOwoKcHJpbnQgImZvbyB2YXV0ICRmb28iOyAvLyBmb28g
 dmF1dCBmb29iYXIKCi8vIFZvdXMgcG91dmV6IGF1c3NpIHV0aWxpc2VyIGRlcyB0YWJsZWF1eAok
 YmFyID0gYXJyYXkoImNsw6kiID0+ICJmb28iKTsKCnByaW50ICJjJ2VzdCB7JGJhclsnY2zDqSdd
 fSAhIjsgLy8gYydlc3QgZm9vICEKCi8vIExlcyBndWlsbGVtZXRzIHNpbXBsZXMgYW5udWxlbnQg
 bGUgcmVtcGxhY2VtZW50IGRlcyB2YXJpYWJsZXMKcHJpbnQgJ2ZvbyB2YXV0ICRmb28nOyAvLyBm
 b28gdmF1dCAkZm9vCgovLyBTaSB2b3VzIG4ndXRpbGlzZXogcGFzIGQnYXV0cmVzIGNhcmFjdMOo
 cmVzLCB2b3VzIAovLyBwb3V2ZXogYWZmaWNoZXIgc2ltcGxlbWVudCB2b3MgdmFyaWFibGVzIGNv
 bW1lIGNlY2kKcHJpbnQgJGZvbzsgLy8gZm9vYmFyCgpwcmludCA8PDxFTkQKQ2V0dGUgc3ludGF4
 ZSBzJ2ludGl0dWxlIGxlICJoZXJlIGRvY3VtZW50IiBldCAKcGVybWV0IGQnYWZmaWNoZXIgcGx1
 c2lldXJzIGxpZ25lcyBhdmVjIGRlIApsJ2ludGVycG9sYXRpb24gZGUgdmFyaWFibGVzLiBOb3Rl
 eiBxdWUgbGEgZmluIGRlCmxhIHN5bnRheGUgZG9pdCBhcHBhcmHDrnRyZSBzdXIgdW5lIG5vdXZl
 bGxlIGxpZ25lLAphdmVjIHVuaXF1ZW1lbnQgdW4gcG9pbnQtdmlyZ3VsZSwgZXQgcGFzIGQnZXNw
 YWNlCmRlIHBsdXMgIQpFTkQ7Cg=="))
 ?>
Commentaire #92656 écrit par ygnobl le 15/05/2013 à 18h55 | 👍🏽 👎🏽
Il y a de l'echo !
Commentaire #92662 écrit par Acné le 15/05/2013 à 19h40 | 👍🏽 👎🏽
@Skefrep : Oui. Tel que Notepad l'afficherait (ou Gedit).
Commentaire #92673 écrit par Aaargh!!! le 15/05/2013 à 19h58 | 👍🏽 👎🏽
Presque, mais il faut une imprimante pour que le code fonctionne :)

EDIT : Ponctuation Nazi, tu ne m'auras pas sur ce coup.
Commentaire #92676 écrit par ygnobl le 15/05/2013 à 20h04 | 👍🏽 👎🏽
@Ygnobl : Et les économies de papier, alors ! /michu mode.
Commentaire #92677 écrit par qwerty le 15/05/2013 à 20h06 | 👍🏽 👎🏽
@ygnobl : hum... tu copies du code depuis http://fr2.php.net/manual/en/function.echo.php et tu ne comprends pas mon jeu de mot !
Commentaire #92694 écrit par Acné le 15/05/2013 à 22h02 | 👍🏽 👎🏽
@Acné :
Si, mais mon humour est vraiment pourri, donc ma manière de faire de l'ironie/du sarcasme/... peut-être incompréhensible, mais je suis comme ça, et nul n'y pourra mais.

naDevvo' yIghoS!
Commentaire #92758 écrit par ygnobl le 16/05/2013 à 11h26 | 👍🏽 👎🏽
Tu peux toujours essayer l'adresse .php~, si le dev est une connaissance de Aaargh!!! il y a des chances que ça fonctionne...
Commentaire #93018 écrit par tony83 le 17/05/2013 à 18h33 | 👍🏽 👎🏽