Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Piratage Mysql

37 réponses
Avatar
Frédéric ZULIAN
Bonjour,

Je viens de me faire pirater ma base de données MYSQL.
apache 2.2.19-2
mysql-server 5.1.58-1


Le petit plaisantin, qui m'a envoyé un mail pour m'avertir de son
« exploit » utilise win NT 5 avec HAVIJ v1.15.

Il a récupéré toute la base : Identifiant et mdp.

Du coût je n'ose plus redémarrer mon serveur.

Une idée de la parade ?

--

Frédéric
F1sxo



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20110915204121.GA11056@zulian.com

10 réponses

1 2 3 4
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 17/09/2011 00:40, Jean-Yves F. Barbier a écrit :
ben, d'après ce qu'il dit l'accès vers le svr mysql est ouvert (p3306)



Ce qui n'est pas recommandable effectivement, mais qui ne semble pas le
vecteur de ce piratage.

ça n'est pas tout à fait vrai: disons plutôt tant que les programmeurs php
ne contrôleront correctement ni leurs morceaux de code ni les droits des
fichiers & directories.



Certes, mais PHP ne fait rien pour inciter à du code propre et à de
belles applications.

Le cœur même de PHP est totalement délirant en matière de bonnes pratiques :
— API hétérogènes et mouvantes,
— Intégration d'une foultitude de « librairies » directement dans le core
— Paramétrage hérétique (magic_quote_gpc ><),
— Aucun respect d'une quelconque de normes de codage,

Même le PHP Engine n'est pas thread-safe et plombe Apache (pre-fork au
lieu de worker) ou incite à l'ultra-crade-pas-sécurisé (fast-cgi).

Comment espérer des applis correctes quand l'environnement dans lequel
elles vont tourner est moisi jusqu'à la moëlle ?

Mais au risque de me répéter, la meilleure parade reste d'inclure le code
"actif" dans la DB (procs stockées); mais je doute qu'à ce jour ce soit facile
(voire même possible à 100%) avec mysql.



C'est extrème comme solution, et totalement innapplicable sur une
application digne de ce nom, que cela soit en PHP ou non et MySQL ou non.
Tu imagines le nombre de stored-proc nécessaires ? De toutes les
variantes de paramètres et/ou de sorties différentes ?
Du coût monstrueux de maintenance d'un tel système ?
Et qu'une telle application serait figée dans le marbre à jamais, toute
évolution future étant vouée à l'échec ?

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOc9awAAoJEK8zQvxDY4P9hKUIAJcxOLzRUU1Cz5GkFrKnVarb
W7qAkn5/QV0GvlWQSeLH7upVqsjbJVqr05X4y03+oLTXx6tzi/Rxk2CDsVrfnab7
AiH47O0U3RbFEge/Qm4wODD6rf/eoUrujVMJSUVRMMwmk2f37Sp5ilOkVqCqXi2p
MpXBSmAcMQiMRjTwdEKI+URBEIcfgrVjwQf6iYzhNzXzjfqFiZT83vzIC+v0XKT1
GHo2xpw4JGRAeqWEtxItGYQ6ejCOKqQ4U/28+E9Fqs4b9aGp+Y9UEKhbwic4kPVv
T47b3UJHKvlXy4utpz810zM2oq+O32ElUYE+oSUzsYOV6J6J9tDukD6odj9pdV8 =9KYH
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4e73d6b5$0$11287$
Avatar
Jean-Yves F. Barbier
On Sat, 17 Sep 2011 01:07:33 +0200, Aéris wrote:

...
Le cœur même de PHP est totalement délirant en matièr e de bonnes pratiques :
— API hétérogènes et mouvantes,
— Intégration d'une foultitude de « librairies » d irectement dans le core
— Paramétrage hérétique (magic_quote_gpc ><),
— Aucun respect d'une quelconque de normes de codage,



Nous sommes bien d'accord sur ces points.

Même le PHP Engine n'est pas thread-safe et plombe Apache (pre-fork au
lieu de worker) ou incite à l'ultra-crade-pas-sécurisé (fa st-cgi).



Ok pour le thread safe, pour ce qui est d'apache, c'est une autre histoire
(design vieillot, conso de RAM effarante, etc).

...
> Mais au risque de me répéter, la meilleure parade reste d'inc lure le code
> "actif" dans la DB (procs stockées); mais je doute qu'à ce jo ur ce soit
> facile (voire même possible à 100%) avec mysql.

C'est extrème comme solution, et totalement innapplicable sur une
application digne de ce nom, que cela soit en PHP ou non et MySQL ou non.
Tu imagines le nombre de stored-proc nécessaires ?



Moins que tu ne penses: je bosse ces temps-ci avec des procs polymorphes qui
effectuent elles-même leurs propres contrôles sur tables et colon nes (Pg, œuf
corse hein, pas merdesql), d'un côté on perd le temps de contrà ´le à chaque
appel, de l'autre on gagne une malléabilité énorme et l'abst raction par rapport
aux données; sans compter l'interdiction totale d'accès direct à ces
mêmes données.
La maintenance n'est pas plus lourde que pour un pgm en php, voire plus l égère,
parce que si l'on reprend le cas du php (hors code de mise en page), il se
contente d'effectuer des appels à des procs stockées (r/a/u/d); l a proc
prenant en charge les autorisations et le traitement réel des donnà ©es.

De toutes les
variantes de paramètres et/ou de sorties différentes ?



Non: il est relativement aisé d'écrire une proc polymorphe qui ne retourne que
les colonnes autorisées (ou renvoie une erreur si pas d'autorisation).

Du coût monstrueux de maintenance d'un tel système ?



Pas plus que des centaines de petits morceaux de code d'un pgm en php, voire
même moins puisque chaque proc a une fonction bien déterminé e (quitte à avoir
un peu de redondance dans le code afin d'éviter le morcellement).

Et qu'une telle application serait figée dans le marbre à jamai s, toute
évolution future étant vouée à l'échec ?



Je ne comprends pas ta vue de la chose: quelle différence vois-tu entr e greper
dans des centaines de bouts de code php pour s'y retrouver et modifier ces
morceaux comme voulu, et modifier directement une ou des procs stockée s dans
la DB?
À part les langages différents et surtout le fait que le contrà ´le total
des données soit dévolu à la DB et non-plus à du code e xterne, je ne vois pas
où se trouve le différentiel de maintenance.

--
Don't everyone thank me at once!
-- Han Solo

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Basile Starynkevitch
On Sat, 17 Sep 2011 01:07:33 +0200
Aéris wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 17/09/2011 00:40, Jean-Yves F. Barbier a écrit :
> ben, d'après ce qu'il dit l'accès vers le svr mysql est ouvert (p33 06)

Ce qui n'est pas recommandable effectivement, mais qui ne semble pas le
vecteur de ce piratage.

> ça n'est pas tout à fait vrai: disons plutôt tant que les program meurs php
> ne contrôleront correctement ni leurs morceaux de code ni les droits des
> fichiers & directories.

Certes, mais PHP ne fait rien pour inciter à du code propre et à de
belles applications.




Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langage. D e plus, il
existe depuis un certain temps des tas de langages (ou d'outils de dévelo ppement
logiciels) pour le Web. Sans être ni spécialiste ni exhaustif je peux c iter

http://opalang.org/
http://ocsigen.org/
http://hop.inria.fr/
http://kayalang.org/

mais il en existe d'autres. Les trois premiers (Opa, Ocsigen, Hop) sont d éveloppés en
France. Tous sont disponibles comme des logiciels libres.

Et je trouve très dommage qu'ils ne soient pas d'avantage utilisés, not amment pour les
sites de logiciels ou de distributions libres

Cordialement
--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 17/09/2011 03:20, Jean-Yves F. Barbier a écrit :
Moins que tu ne penses: je bosse ces temps-ci avec des procs polymorphes qui
effectuent elles-même leurs propres contrôles sur tables et colonnes



Je serais intéressé par un exemple, là comme ça je ne vois pas…

Comment peut-on gérer par procédure stockée le fait que les arguments
peuvent être variable (tri par date *OU* par nom), avoir des
comportements différents (nombre de post dans un topic, puis liste des
topics, puis liste des posts du topic joint avec la table des auteurs),
ou retourner des valeurs différentes (dans les cas précédents, un
nombre, une liste de topic, une liste de (post + auteur)) ?
Sans exponentiation du nombre de stored-proc et/ou de leur complexité,
j'ai du mal à concevoir…

de l'autre on gagne une malléabilité énorme et l'abstraction par rapport
aux données;



Là aussi, je bloque…

À la moindre modif des fonctionnalitées et/ou de la structure de
données, j'imagine assez mal comment on peut éviter un refactoring
monstrueux du nombre tout aussi monstrueux des stored-proc.
Par exemple avec l'exemple des topics précédents, le fait de rajouter
une date de publication à un post par exemple, nécessite a minima
d'ajouter encore X stored-procs pour pouvoir gérer les filtres et les
tris sur cette colonne, de refondre Y stored-procs pour ajouter cette
date en données de sortie, etc.

La maintenance n'est pas plus lourde que pour un pgm en php, voire plus légère,



Si on arrive à m'expliquer les points ci-dessus, OK, pourquoi pas…
Pour l'avoir déjà expérimenté sur un projet où la contrainte cliente
était de n'avoir aucune requête dans le code mais tout dans les
stored-procs, ça a été un échec total déjà sur la 1ère version du soft
(de mémoire, on manipulait plus de 500 SP), et un cuisant Armageddon le
jour où on a du refondre les fonctionnalités et les données.

> De toutes les
> variantes de paramètres et/ou de sorties différentes ?


Non: il est relativement aisé d'écrire une proc polymorphe qui ne retourne que
les colonnes autorisées (ou renvoie une erreur si pas d'autorisation).



Cf questions ci-dessus. J'ai du mal à me faire une idée de l'existence
de telles SP.

Pas plus que des centaines de petits morceaux de code d'un pgm en php, voire
même moins puisque chaque proc a une fonction bien déterminée (quitte à avoir
un peu de redondance dans le code afin d'éviter le morcellement).



Et donc à balayer d'un revers de la main toutes les bonnes pratiques de
développement…

Je ne comprends pas ta vue de la chose: quelle différence vois-tu entre greper
dans des centaines de bouts de code php pour s'y retrouver et modifier ces
morceaux comme voulu, et modifier directement une ou des procs stockées dans
la DB?



En PHP, je ne dis pas, mais même dans ce langage, un programme « bien
conçu » (3-tiers, MVC, template, séparation forme/contenu…) est assez
facilement maintenable et évolutif.

À part les langages différents et surtout le fait que le contrôle total
des données soit dévolu à la DB et non-plus à du code externe, je ne vois pas
où se trouve le différentiel de maintenance.



Il se trouve aussi du côté des outils.
Si je développe en Java, j'ai des outils de refacto automatique, de la
complétion automatique, des navigateurs de code…
Choses déjà passablement existantes en PHP (mais c'est possible) mais
carrément inexistantes au niveau BDD et SP.

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOdHwGAAoJEK8zQvxDY4P9opAIAL9UFNJUGJFNTckN77ijOohT
r4L+l+DlGV0sLL0fxEsciHpdpc/DkFf3NGjvlZ5jxGqjJ2sKKVZB8MqV7qQ5SHyd
HONFra1Lf7oB+8aDffwUJIi9KZTx8TzXgshfWIDNkdMiGhr7a9o+Yd1b/mk02vui
wUJZoHsKylctGl5BRnGV+eguxRtpfkbU4wVGiSOzDct41bZBePn6UAQfa7lWyUWj
fC1gaybies2z7bIE1+kIzdofrVv3LVxAS8ZG4fVMw3JRXvwGcSUNLX58wt5B20hw
wNbn+7dWzP9mkI3fS9l7qwDdKwpxrTzrpXovKcf2v5gc90JJTD6n/Qnqpfd3qSA =VNgm
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4e747c0b$0$973$
Avatar
kaliderus
Bonjour,

Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langage.


-> Par curiosité, peux-tu développer ce point stp ?

Merci.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/CAPrKK3CN-Hym9=
Avatar
Jean-Yves F. Barbier
On Sat, 17 Sep 2011 12:52:59 +0200, Aéris wrote:

...
Je serais intéressé par un exemple, là comme ça je ne vois pas…



Bien essayé, mais pas tant que je n'ai pas fini et publié mon pro jet.

Comment peut-on gérer par procédure stockée le fait que le s arguments
peuvent être variable (tri par date *OU* par nom), avoir des
comportements différents (nombre de post dans un topic, puis liste d es
topics, puis liste des posts du topic joint avec la table des auteurs),
ou retourner des valeurs différentes (dans les cas précéde nts, un
nombre, une liste de topic, une liste de (post + auteur)) ?
Sans exponentiation du nombre de stored-proc et/ou de leur complexità ©,
j'ai du mal à concevoir…



C'est pourtant relativement simple: ce que tu faisais dans php tu le fais
maintenant dans la PS, avec juste qq lignes de plus pour gérer ce type
d'indirection.

> de l'autre on gagne une malléabilité énorme et l'abstrac tion par rapport
> aux données;

Là aussi, je bloque…



Les données sont totalement inaccessibles de l'extérieur sauf pou r le SU de la
DB; seules les PS y ont accès, après contrôle des droits de l'appelant.

À la moindre modif des fonctionnalitées et/ou de la structure de
données, j'imagine assez mal comment on peut éviter un refactor ing
monstrueux du nombre tout aussi monstrueux des stored-proc.



Non, le travail est égal, à moins bien sûr que tu n'utilise des trucs de
débutants comme SELECT * FROM matable au lieu de SELECT col1,col2,col6 FROM
matable.

Par exemple avec l'exemple des topics précédents, le fait de ra jouter
une date de publication à un post par exemple, nécessite a mini ma
d'ajouter encore X stored-procs pour pouvoir gérer les filtres et les
tris sur cette colonne, de refondre Y stored-procs pour ajouter cette
date en données de sortie, etc.



Pas plus que dans du code extérieur.

> La maintenance n'est pas plus lourde que pour un pgm en php, voire plus
> légère,

Si on arrive à m'expliquer les points ci-dessus, OK, pourquoi pas⠀¦
Pour l'avoir déjà expérimenté sur un projet où l a contrainte cliente
était de n'avoir aucune requête dans le code mais tout dans les
stored-procs, ça a été un échec total déjà sur la 1ère version du soft
(de mémoire, on manipulait plus de 500 SP), et un cuisant Armageddon le
jour où on a du refondre les fonctionnalités et les donnée s.



Dans ce cas (comme dans les autres), il *FAUT* faire signer au client un
cahier des charges exhaustif - ET avant tout se rappeler qu'un pro a le DEV OIR
(juridique!) de dire non à son client si ses desiderati sont farfelus.
J'ai souvenir d'un ami a qui le commercial a refilé un dossier; aprà ¨s (courte)
analyse ce que voulait principalement le client se résumait à 30, 000 hits à la
seconde...

>> > De toutes les
>> > variantes de paramètres et/ou de sorties différentes ?
> Non: il est relativement aisé d'écrire une proc polymorphe qu i ne retourne
> que les colonnes autorisées (ou renvoie une erreur si pas d'autori sation).

Cf questions ci-dessus. J'ai du mal à me faire une idée de l'ex istence
de telles SP.



Ca m'a pris un temps fou en travail et réflexion pour trouver des solu tions;
donc comme dit plus haut, pas de comm tant que mon projet n'est pas
terminé/publié (ce qui prendra le même temps... que le fà »t du canon pour
refroidir:).

> Pas plus que des centaines de petits morceaux de code d'un pgm en php,
> voire même moins puisque chaque proc a une fonction bien déte rminée
> (quitte à avoir un peu de redondance dans le code afin d'évit er le
> morcellement).

Et donc à balayer d'un revers de la main toutes les bonnes pratiques de
développement…



Explique-moi la diff que tu vois entre entre des morceaux de php et
différentes PS?

> Je ne comprends pas ta vue de la chose: quelle différence vois-tu entre
> greper dans des centaines de bouts de code php pour s'y retrouver et
> modifier ces morceaux comme voulu, et modifier directement une ou des
> procs stockées dans la DB?

En PHP, je ne dis pas, mais même dans ce langage, un programme  « bien
conçu » (3-tiers, MVC, template, séparation forme/contenu …) est assez
facilement maintenable et évolutif.



Dans mon système, le MVC n'existe pas (en fait c'est la PS qui a ce r ôle).
Par ailleurs je reste persuadé que l'archi 3-tiers est très loin d'être une
panacée universelle; contrairement à ce que pense notamment la pl upart des
programmeurs, notamment web.
Le 3-tiers est utile dans certains types d'applis bien particulières, pas dans
toutes.
C'est comme pour les sites qui mettent 3' à charger la page de garde, ça n'est
pas parce qu'on a un quadri-CPU en dev qu'on ne doit pas penser à ceux qui
surfent avec un P3-500 - beaucoup, si ce n'est la plupart, devraient bien se
rentrer cela dans la tête.

> À part les langages différents et surtout le fait que le cont rôle total
> des données soit dévolu à la DB et non-plus à du co de externe, je ne vois
> pas où se trouve le différentiel de maintenance.

Il se trouve aussi du côté des outils.
Si je développe en Java, j'ai des outils de refacto automatique, de la
complétion automatique, des navigateurs de code…
Choses déjà passablement existantes en PHP (mais c'est possible ) mais
carrément inexistantes au niveau BDD et SP.



Il existe des tas d'éditeurs permettant une personnalisation poussà ©e.
Par ailleurs je me suis aperçu que la phase de conception est trè s souvent le
parent pauvre de la programmation; c'est une erreur: quand tu as bien pens é ta
proc il ne te faut que très peu de temps pour la transformer en code
opérationnel.
Evidemment, cela va à l'encontre de la mode actuelle où il faut p isser de la
ligne de code au kilomètre et où bien souvent on ne se pose la bo nne question
que trop tard.
Rappelle-toi d'ailleurs (enquête sur une douzaine de SSII il y a qq an nées) que
60% des actions nécessitent un retour chez le client pour non-conformi té/bugs/
mauvaise ergonomie/etc (mes propres informateurs me rapportent plutôt un %age
proche de 85%).

Je ne prétend pas avoir la science infuse, très loin de là, mais s'il y a une
chose pour laquelle je suis doué c'est de repérer les erreurs que font les
autres, et par voie de conséquence tâcher de ne pas les rép éter.

--
Nadia Comaneci, simple perfection.
-- '76 Olympics

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jean-Yves F. Barbier
On Sat, 17 Sep 2011 14:25:49 +0200, kaliderus wrote:

> Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langag e.
-> Par curiosité, peux-tu développer ce point stp ?



Pour faire court: php a pillé perl; perl n'est pas un mauvais langage mais
tout comme C il permet le plus agréable des codes comme le plus illisi ble
et pourri possible.

--
Procrastination means never having to say you're sorry.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Dominique Asselineau
kaliderus wrote on Sat, Sep 17, 2011 at 02:25:49PM +0200
Bonjour,
>
> Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langage.
-> Par curiosité, peux-tu développer ce point stp ?



Aéris a donné quelques points ce matin dans son message posté à 01:07.
À chacun de vérifier s'il le souhaite.

dom
--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 17/09/2011 14:30, kaliderus a écrit :
Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langage.


-> Par curiosité, peux-tu développer ce point stp ?



PHP est mauvais, et à plusieurs titres.

Déjà, à la différence d'autres langages, il est intrinsèquement mauvais,
c'est-à-dire que dès le cœur de PHP, les mauvaises décisions ont été prises.
Au pifomètre, on peut citer des API extrèmement mouvantes
(ajout/suppression de méthodes entre 3 versions consécutives de PHP), un
manque total de convention de programmation (strlen mais str_split), des
fonctionnalités hérétiques (magic_quote_gpc…), l'intégration de
fonctionnalités qui auraient plus sa place dans des libs externes que
dans le core (compression, traitement des cartes de crédit,
authentification Kerberos, tag IDv3…), ou encore le moteur non
thread-safe qui emmerde totalement le monde pour du déploiement.

Tout à été fait pour faire tout, n'importe quoi, n'importe comment et
par n'importe qui.


De l'autre côté, côté développeur, PHP est vendu la plupart du temps
comme le langage à la portée de n'importe qui, y compris du
non-professionnel.
C'est comme pour le domaine de la vente d'ordinateur, on a vendu du rève
en vendant comme quelque chose de simple une chose qui est en réalité
extrèmement complexe.

Étant donné que le core lui-même n'incite pas aux bonnes pratiques, la
plupart des utilisateurs de PHP (je n'ose trop dire développeurs) ont
fait n'importe quoi, ne filtrent pas leurs données avant l'envoi en
base, mélange très fortement PHP et HTML, n'architecture pas leurs
applications…
Et ceci d'autant plus que les paradigmes de PHP comme la programmation
objet sont développés avec les pieds. Je ne sais pas si tu as déjà
tenter de faire de la POO avec PHP, mais on s'y sent rapidement très
frustré tellement on est loin des possibilités de n'importe quel autre
langage orienté objet (héritage buggé, méthodes statiques buggées,
absence de polymorphisme…).

On retrouve au final des applications la plupart du temps totalement
non-sécuritaire (injection SQL, XSS…), bugguées, indémerdables, non
évolutives… Il y a rarement de véritable v2 pour une application en PHP,
tout au plus une v1-bis où on a tout foutu à la benne pour refaire avec
le nouveau cahier des charges.


Après, PHP souffre aussi de gros problèmes par son fonctionnement même.

Il est stateless dans son fonctionnement au sens où chaque appel relance
une réinterprétation intégrale de ton application.
À l'inverse en JEE par exemple, ta conf et ta connexion à ta base de
données est montée une fois pour toute au démarrage de ton serveur
d'application, ce qui permet de mettre facilement et proprement en place
des systèmes de pool, de cache ou de mutualisation des ressources entre
chaque client. Pas besoin par exemple de reloader 30 millions de fois ta
configuration par mois, ça sera le même objet qui transitera pour toutes
tes requètes.
Cela est très handicapant pour PHP, car du coup cela implique de faire «
light » en terme de performance. Impossible par exemple d'utiliser un
ORM type Hibernate, qui prendrait des plombes à se charger à chaque
appel. On pare au plus vite, au plus pressé, quitte à foutre des
requêtes SQL redondées dans tous les fichiers du projet.

Idem au niveau de l'interprétation, c'est au développeur de gérer le
cycle des dépendances, à gros coup d'include dans tous les sens, souvent
en dépit du bon sens, avec des tricks à la con (le tristement célèbre «
require_once('views/'.$_GET['view'].'.php') »)…
Tout ça parce qu'une méthode « propre » serait inabordable pour tout non
professionnel du développement, rendrait le système lent au possible
(stateless quand tu nous tiens…).


Donc voilà, je vais m'arréter là, sinon je pourrais encore y passer ma
journée =)
Si certains sont intéressés sur le sujet (d'accord ou non avec moi =)),
qu'ils n'hésitent pas à me contacter, c'est aussi un sujet qui me
passionne et dont je serais ravi de discuter, en particulier si
quelqu'un a une solution pour éviter de basculer dans le « bordel PHP »
tout en faisant du PHP (qui est quand même une solution qui serait
intéressant (si elle n'avait pas autant d'inconvénients) de par sa
simplicité de déploiement (à l'inverse de Java, Python, RoR ou autre).

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOdJwWAAoJEK8zQvxDY4P9hQUH/Agbnmzef+9OwtQ95wJCdl60
S1YnU/rSU42Z6o40nh08BNfEZ0OFvUR9Eu+RU16EEaYd3ysC1KjgAb1s1Lw6f/3U
jwdT9tSpo/Odi0hGQJuNCQjUYm4VY1CyPhZsdYa9szskEsDCV/qqJCdqGtZLLGia
YSRgkzdejsBNqNxUtk9lVZvLhCUjpD5Z6d88JqxWaeoydP26GThVvPMqbW9+2i4f
2ZOjlXmPU/eFVMF1mHkM2PPRX81D9ncBXFknz3gGnyto3qAnlQX3I28K+OLAlRB0
fWl4I07j6VC1/USCeW9wIBGily/ft2yqhh2I7+V3EEdMqnQMV7Bb83GfGrH+WkA =O4/o
-----END PGP SIGNATURE-----

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/4e749c20$0$1428$
Avatar
Basile Starynkevitch
On Sat, 17 Sep 2011 14:51:36 +0200
Dominique Asselineau wrote:

kaliderus wrote on Sat, Sep 17, 2011 at 02:25:49PM +0200
> Bonjour,



On me cite:

Basile>>> Je n'ai jamais compris l'engouement vers PHP, qui est un mauvais langage.

> -> Par curiosité, peux-tu développer ce point stp ?

Aéris a donné quelques points ce matin dans son message posté à 0 1:07.
À chacun de vérifier s'il le souhaite.



J'ai un peu la flemme de faire une N+1-e critique argumentée de PHP. On e n trouve
déjà plein, et ça prend du temps à rédiger. On en trouve d'une p art sur les sites que
j'avais indiqués :
Sans être ni spécialiste ni exhaustif je peux citer

http://opalang.org/
http://ocsigen.org/
http://hop.inria.fr/
http://kayalang.org/

mais il en existe d'autres.



[j'aurais tendance à imaginer que celui qui demande pourquoi PHP est mauv ais n'a pas pris
le temps de regarder ces références]

Et d'autre part on trouve des critiques argumentées
de PHP ailleurs, et notamment dans les communautés spécialisées - par exemple
http://lambda-the-ultimate.org et des tas d'autres.

Sans prendre le temps d'expliciter, PHP est mauvais:
* par l'absence de sécurité, dont témoignent toutes les intrusions, par exemple celle à
l'origine de cette discussion.
* par la mauvaise performance (combien de centrales nucléaires économ iserait-on en
remplaçant tous les sites PHP par des solutions plus efficaces?)
* par la difficulté de développement (pour des sites conséquents).

Sur ce dernier point, PHP fait la même erreur que Tcl: Si PHP est peut- être un language
potable pour développer une micro-application Web de 50 lignes, il ne l'e st pas pour des
applications qui en font plusieurs dizaines de milliers de ligne de code.

En particulier, l'inférence de types qu'on trouve dans tous les languages statiquement
typés récents (Ocaml, Haskell pour les languages généralistes; Kaya et Opa pour les
langages Web) est un moyen pour assurer, par l'analyse statique du code, sa robustesse.
Et le Web est aussi une affaire de continuation (au sens par exemple de
http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/queinne c.pdf et
autres).

De manière générale, je pense fortement que les langages de programma tion progressent
(surtout quand on y inclut ceux produits par la recherche plus ou moins aca démique).

L'argument majeur, et très conservateur, en faveur de PHP, c'est que n'im porte qui peut
prétendre le connaître. Et donc qu'un employeur peut trouver quelqu'un , payé presque au
SMIC, pour pisser du PHP. La réalité, c'est que le développement de l ogiciels (y compris
Web) est compliqué quand il s'agit de développement d'une certaine tail le; que c'est donc
un métier qui demande des qualifications, et qu'un ingénieur Bac+5 corr ectement formé peut
rapidement apprendre des langages (qu'il n'aurait pas appris à l'école ou à
l'université). Conséquemment, une entreprise aurait probablement inté rêt à investir dans
du personnel qualifié.

Désolé, mais j'ai la flemme de rédiger une réponse plus complète (alors qu'il en existe
déjà pleins ailleurs).

Cordialement.


--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2 3 4