OpenDCF à l'épreuve du feu

Eléphant du PHP | 74 Messages

13 oct. 2008, 09:41

Hello à tous,

Ca y est mon projet Open Source approche de la version 1.0 final et stable.

Après 2 ans de développement et re-développement d'OpenDCF (pour rappel c'est un fork du projet factux), 10 versions mineur et 1 beta 1.00 , je viens de sortir une 1.00 rc1 qui sera j'espère la dernière version avant la 1.00 final.

Afin de valider la stabilité et les fonctionnalités de mon projet je vous demande donc de l'éprouver un peu.

2 solutions :
- soit vous télécharger et installer la 1.00 rc1 dispo ici : http://code.google.com/p/opendcf/downloads/list
- soit vous pouvez directement tester la démo accessible ici : http://opendcf.1g6.biz/demo/

But du logiciel : C'est un soft pour les TPE (toutes petites entreprises) afin de gérer leur Devis, Commandes, et Factures. On trouve donc également une gestion des clients et des articles. L'objectif principale est de fournir aux TPE un outil plus évolué qu'un simple tableur sans pourtant perdre en souplesse d'utilisation (au contraire qu'un outil commercial).

D'un point de vue sécurité pour les amateurs de XSS et autres joyeuseries de ce genre je n'ai considéré que seule la page d'accueil n'a besoin d'être sécurisé. Les autres pages pouvant etre vue comme un intranet pour le client (s'il souhaite casser ce qu'il vient d'installer c'est plus mon problème). Les pages autres que la page d'accueil requières donc toutes une authentification.

Si vous voulez accéder aux sources sans télécharger OpenDCF elles sont dispo ici : http://opendcf.1g6.biz//openDCF_maj/


Merci, Amusez vous bien :p
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz

ViPHP
ViPHP | 4674 Messages

16 oct. 2008, 19:23

Hey :),

J'ai regardé rapidement l'interface, les sources (HTML et PHP) et voici mes premières impressions.

Niveau maintenance, ça vaut quoi ? Pour un projet qui commence à être important (plusieurs dizaines de fichiers), je me serais plutôt tourné vers de l'objet. Note, c'est une choix. D'ailleurs, ça tourne seulement en PHP 5 car tu utilises SimpleXML, tu fais un test quelques part sur le numéro de version de PHP ?
Toujours sur la maintenance, les langues ne sont pas prises en compte. La vue est attachée au code PHP. Tu sais qu'on préfère éviter :).

Le code HTML maintenant. J'ai vu une balise <center>. Oula … *respire* il faudrait abuser un peu plus de CSS, ça ne fait pas de mal en règle générale :).
Je n'ai pas regardé l'accessibilité de l'application, mais j'ai vu beaucoup de tableau « mal construit » (manque des balises <th> par exemple).

Le code PHP : il faut tout protéger de A à Z. Se dire : « le client peut se suicider tout seul, ça m'est égal » ne tient pas la route. Même s'il utilise un intranet, on peut s'y connecter et tout casser. Imagine qu'il l'installe sur un extranet, il n'est plus protéger.
Les factures sont des données sensibles, très sensibles même. La sécurité est donc un point à mettre fortement en avant. C'est un argument qui n'est pas négligeable.
Il faut donc sécuriser au maximum ton application et effectuer une batterie de test.

La structure de l'application : pour une raison de maintenance et de faciliter, je me serais tourné vers un MVC. Mais bon, on est dans la période use-POO, use-MVC, use-Ajax, alors je ne vais pas te tanner avec ça :). Seulement, j'aime la POO, et pour un projet comme le tien, c'est extrêmement pratique. Tu peux faire évoluer la structure vers un raisonnement par module (module facture, module client etc), au lieu de tout mettre à la racine.

Le design de l'application : c'est très laid :D. C'est pas méchant hein, je plaisante :), n'empêche que je trouve pas ça très attirant. Ton application doit séduire. Même le meilleur programme du monde avec une interface moche et merdique ne sera pas choisi. Donc il faut penser à l'expérience utilisateur, maniabilité de l'application etc. Une telle application sera utilisée par une bête petite secrétaire : va-t-elle y arriver ? Le vocabulaire est-il adapté ? Les erreurs sont claires et parlantes ? Ce sont des questions à se poser.

L'idée de l'application : pourquoi faire un fork de factux ?

La version de l'application : c'est marrant de voir une application passée en RC sans être testée :P, c'est moi ou … ?


Je ne peux que t'encourager sur un tel projet. Ça va t'apprendre beaucoup de chose, et c'est un très bonne exercice. Seulement, garde en mémoire qu'elle n'est pas encore parfaite et qu'il y a encore pas mal de choses à améliorer. Les TPE doivent être séduites au premier essaie, premier coup d'œil, est-ce que ça peut le faire ?
Sinon, considère ma réponse comme un résumé et surtout comme un ensemble de piste à suivre ou à étudier :).

Bon travail, continue :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 4039 Messages

16 oct. 2008, 22:15

Juste pour dire que Hywan est un mal.. perfectionniste, il a fait son propre framework, et que donc il connait en profondeur ce à quoi tu te confrontes. D'ou sa profonde implication à ton projet.

Je dis juste ça pour m'assurer que tu le prennes dans le bon sens. Je n'y ais pas jeté l'œil exercé d'Hywan, mais j'y ais trouvé quand même une certaine maturité.

Et je finirais par dire que l'important est la fonctionnalité, et pas tout de suite l'esthétique. Au finish, pour les utilisateurs, c'est la valeur ajoutée qui importe.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
fab
ViPHP | 2657 Messages

17 oct. 2008, 03:45

Au passage t'es en train de nous dire que tu viens de mettre en ligne une version démo qui est une passoire de sécu? T'es suicidaire? :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 3607 Messages

17 oct. 2008, 10:20

A l'attaquuuuuuuuuuueeeeeeeeeeeeeee!!!!!!!!!! :twisted:
(nan je rigole, je sais pas faire le hacker moi... :oops: )

ViPHP
fab
ViPHP | 2657 Messages

17 oct. 2008, 15:04

c'est pourtant le meilleur moyen d'apprendre à se proteger :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 1668 Messages

17 oct. 2008, 19:53

moi chaque fois que j'essaye de me hacker, j'y arrive pas, je suis dégoûter, ça veut dire que je suis meilleur codeur que hacker, je sais pas si c'est bon à prendre :lol:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4039 Messages

17 oct. 2008, 22:14

moi chaque fois que j'essaye de me hacker, j'y arrive pas, je suis dégoûter, ça veut dire que je suis meilleur codeur que hacker, je sais pas si c'est bon à prendre :lol:
ça dépends à quoi tu te limites.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

17 oct. 2008, 23:11

Modération :
Hep, les gars ! Merci de rester dans le sujet... =;

Eléphant du PHP | 74 Messages

20 oct. 2008, 00:42

Hey :),

J'ai regardé rapidement l'interface, les sources (HTML et PHP) et voici mes premières impressions.

Bon travail, continue :).
Merci HyWaN de tes remarques je vais juste les commenter histoire d'expliquer un peu mes choix de développement :
Niveau maintenance, ça vaut quoi ? Pour un projet qui commence à être important (plusieurs dizaines de fichiers), je me serais plutôt tourné vers de l'objet. Note, c'est un choix.
OpenDCF est un fork de factux entièrement développer sans objet et php4.
Il etait évident que je n'allait pas tout réecrire, et j'ai beaucoup hésiter à ajouter de l'objet ou non.
Je n'ai pas considérer qu'ajouter de l'objet apportait quelque chose à OpenDCF, j'ai donc continué le développement en procédural.
Mon cœur balance toujours entre objet ou non. La mode et les informaticiens diront toujours qu'il faut faire de l'objet, mais avec les petites contributions, et les adaptations facile qu'effectue des non informaticiens dans OpenDCF je me dit que ce choix n'est pas forcement le mauvais.
D'ailleurs, ça tourne seulement en PHP 5 car tu utilises SimpleXML, tu fais un test quelques part sur le numéro de version de PHP ?
Oui il y a un test à l'installation (test également de php_gd et php-curl qui est facultatif)
Toujours sur la maintenance, les langues ne sont pas prises en compte. La vue est attachée au code PHP. Tu sais qu'on préfère éviter :).
Meme remarque que pour le choix de l'objet.
Le code HTML maintenant. J'ai vu une balise <center>. Oula … *respire* il faudrait abuser un peu plus de CSS, ça ne fait pas de mal en règle générale :).
Je n'ai pas regardé l'accessibilité de l'application, mais j'ai vu beaucoup de tableau « mal construit » (manque des balises <th> par exemple).
Je fait valider la plupart du code en xhtml 1.1 transactionnel. Je crois que peu de site réalise ce genre de tests et la balise center n'a jamais causé d'alert ni meme de warning (pour info la page d'accueil de phpfrance contient 136 erreurs et 22 warning).
Mais appréciant les normes html et vue que la balise <center> est déconseillé, je vais au fur et à mesure des maintenance la remplacer par du css (http://www.la-grange.net/w3c/html4.01/c ... deprecated)
Le code PHP : il faut tout protéger de A à Z. Se dire : « le client peut se suicider tout seul, ça m'est égal » ne tient pas la route. Même s'il utilise un intranet, on peut s'y connecter et tout casser. Imagine qu'il l'installe sur un extranet, il n'est plus protéger.
Les factures sont des données sensibles, très sensibles même. La sécurité est donc un point à mettre fortement en avant. C'est un argument qui n'est pas négligeable.
Il faut donc sécuriser au maximum ton application et effectuer une batterie de test.
Seul la page de login est blindé et crée une variable de session. Toutes les autres pages verifient l'existence de cette variable de session. Il faut donc au moins un login / mot de passe. A partir de ce principe j'ai considéré que l'utilisateur ne cherchera pas à accéder à des urls en modifiant manuellement les paramètres ou bien à effectuer des POST manuellement. Les formulaire sont donc uniquements tester en javascript. Cette solution à l'avantage de d'être plus agréable (mise en couleur des champs qui ont provoqué l'erreur), et plus rapide à coder (pas besoin de re-remplir les champs), mais en effet moins sécuriser.
Pour ceux à qui ca peut faire peur, essayez s'il vous plait de trouver une faille sans connaitre ni le login ni le mot de passe.

La structure de l'application : pour une raison de maintenance et de faciliter, je me serais tourné vers un MVC. Mais bon, on est dans la période use-POO, use-MVC, use-Ajax, alors je ne vais pas te tanner avec ça :). Seulement, j'aime la POO, et pour un projet comme le tien, c'est extrêmement pratique. Tu peux faire évoluer la structure vers un raisonnement par module (module facture, module client etc), au lieu de tout mettre à la racine.
Meme remarque que pour l'objet :-) et comme tu dit j'ai l'impression qu'il y a un gros effet de mode à ce sujet, où l'ont considère que la technique est plus importante que les fonctionnalité.
J'ai vue des projets où justement la seule utilisation de la POO etait classer les méthodes dans une classe. Si on limite la puissance de la POO à cette seule utilisation, et s'il ne faut que ca pour dire que techniquement c'est un beau projet, et bien je peut franchement le dire je suis content de ne pas alourdir mon projet avec de la POO.
Le design de l'application : c'est très laid :D. C'est pas méchant hein, je plaisante :), n'empêche que je trouve pas ça très attirant. Ton application doit séduire. Même le meilleur programme du monde avec une interface moche et merdique ne sera pas choisi. Donc il faut penser à l'expérience utilisateur, maniabilité de l'application etc. Une telle application sera utilisée par une bête petite secrétaire : va-t-elle y arriver ? Le vocabulaire est-il adapté ? Les erreurs sont claires et parlantes ? Ce sont des questions à se poser.
je ne m'inquiète pas des cela, lol, le retours des utilisateurs sur le forum d'OpenDCF va dans l'autre sens :-)
Mais je prend note (Si en effet le theme que tu avait etait rouge ou bleu foncé c'est très laid, seul le bleu clair est soigné).
L'idée de l'application : pourquoi faire un fork de factux ?
Par ce que le développeur principale de factux à refuser mes contributions et ignorer mes alertes concernant de multiple faille de sécu. Dommage ... un beau gachi ...
La version de l'application : c'est marrant de voir une application passée en RC sans être testée :P, c'est moi ou … ?
Pourquoi pas testé ? j'utilise OpenDCF depuis 2 ans, et certain depuis un an une vingtaine d'autre développeur utilise des version beta en production (c'est pas forcement prudent, mais ils sont avertit, et de mon coté cela forunit de bon retour d'expérience).
Cette RC1 est la par contre la première version pour laquelle je fais de la pub
Je ne peux que t'encourager sur un tel projet. Ça va t'apprendre beaucoup de chose, et c'est un très bonne exercice. Seulement, garde en mémoire qu'elle n'est pas encore parfaite et qu'il y a encore pas mal de choses à améliorer. Les TPE doivent être séduites au premier essaie, premier coup d'œil, est-ce que ça peut le faire ?
Sinon, considère ma réponse comme un résumé et surtout comme un ensemble de piste à suivre ou à étudier :).
Oh oui j'ai déjà beaucoup appris. Sutout sur le faite que trop de technique ne sert à rien si elles n'apportent pas de fonctionnalités.
Après séduire les TPE, et bien ... OpenDCF c'est avant tout pour moi que je le développe, et si certain besoin d'utilisateur sont intéressant à réaliser / ajouter et bien je prend mon clavier.


Enfin pour conclure sur la technique (car c'est surtout cela que tu as commenté), au début du développement d'OpenDCF j'ai commencé à reprendre le code pour que techniquement il soit "beau" et au bout de 6 mois de boulo je me suis rendu compte qu'il n'y avait encore aucune nouvelle fonctionnalité (alors que certain utilisateur attendait déjà beaucoup de ce fork). Je me suis vite rendu compte qu'avoir un projet en MVC, objet, un super framework et tout le reste ne sert à rien si la premiere RC met 5 ans pour arriver. Il est sure que le projet sera plus perenne à terme mais en attendant ni moi (qui suis le premier utilisateur) ni personne d'autre n'a un facturier simple et rapide d'utilisation (ce qui à fait le succes de factux), et mise à jour, amélioré et ouvert à la communauté.

Merci encore.
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz

ViPHP
ViPHP | 4674 Messages

20 oct. 2008, 01:17

Alors, t'as plutôt répondu dans l'ensemble, i.e. rien oublié :).

Pour l'intégration de l'objet, oui c'est un effet de mode mais il y a des raisons. Toute mode est créée par des gens qui ne connaissent pas le sujet à fond, mais il y a de réels avantages à l'objet, et ton application est un cas typique d'exercice presque. Une sorte de cas scolaire, super excitant. Sans aller jusqu'à créer ton propre framework (ce qui serait inutile), tu peux néanmoins utiliser des bibliothèques qui te serait très utile. Je pensais justement à des bibliothèques pour une gestion de module ou encore de CRUD (pour Create Read Update Delete), ce que tu fais à 90% du temps dans ton application.

Donc ma remarque n'était pas juste en rapport avec la mode actuelle mais parce que ton application « impose » plus ou moins l'usage de la POO. Certes, regrouper 3 fonctions dans une classe est inutile, mais on ne parle pas de ça ici. Et pour ceux (j'en vois venir ;-)) qui diront qu'on peut faire la POO en procédurale, je répondrai que oui mais pas en PHP, et toc :P.

Il est peut-être plus long de développer en objet dès le début car tu dois d'abord faire tes outils mais pour la suite, tu vas vraiment sentir la différence dans ton développement. Les blocs d'application (ou de code) pourront plus rapidement s'emboîter et tu gagneras aussi bien en maintenance qu'en productivité, ça c'est certain. Donc qui dit productivité accrue, dit mise en place de fonctionnalités plus facilement réalisable. Là encore, ça ne reste que mon avis :).

Concernant l'HTML et le CSS, je sais que le forum de PHPFrance comporte des erreurs, mais c'est de la faute à PhpBB :D (et toc !).
Je n'ai pas dit que ton code n'était pas valide, en revanche, ce n'est pas parce qu'un code est valide qu'il est bien construit. Chaque balise a un sens, une signification et un but précis. On parle de sémantique et plus de syntaxe. C'est en ça que je faisais ma remarque.

Pour le défi de hack, on repassera. Si tu penses que ton application est sécurisée, c'est toi que ça regarde. Mais tu donnes déjà deux failles toi-même dont notamment l'envoie de POST directement par HTTP sans passer par les formulaires (donc en esquivant le Javascript). Donc on peut modifier la base de données et gare aux bobos. Soit dit en passant, si un de tes utilisateurs à Javascript de désactiver, la faille sera la même.

Ah oui, encore une petite note sur la POO : programmer avec de l'objet n'alourdit pas les projets … D'où est-ce que ça sort ça :P ?

Enfin, pour la version de ton application, je n'avais pas compris qu'elle avait testé par des bêta-testeurs, pardon.


Sinon, pour aller dans le sens de Berze', oui mes remarques étaient positives, et ces dernières le sont encore. J'espère juste t'avoir fait réfléchir sur certains points :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1511 Messages

20 oct. 2008, 08:51

Je passe juste histoire de donner mon avis, en tant que vendeur a temps partiel.
Je suis ammenné a utiliser ce type de logiciels dans mon environnement de travail, mais pas a la même échelle.
Tu as concu un système relativement interessant, et je regrette sur le coup que celui-ci ne soit pas orienté POO, car grâce a celle-ci, tu aurais pu concevoir une sorte d'adaptateur pour se connecter a la base de données d'un client qui serait déjà existante.
Enfin, ce n'est qu'une supposition.
Au niveau de l'interface, ca fait très amateur je trouve, et ne risque pas d'interesser les TPE. Un bon exemple en est le manque de lisibilité de la dernière colonne sur le listing des bons.
Ensuite, les smileys dans la page des devis... Ahem...

Enfin bon, rien n'est parfait comme on dit, et on peut toujours faire mieux ;)
Ce que tu as fait représente déjà un sacré travail et je t'en félicite. Il ne te reste maintenant plus qu'a corriger les failles de sécurité ainsi qu'améliorer l'interface, après tu pourras te concentrer sur l'ajout de fonctionnalités.

Bonne journée ;)

Eléphant du PHP | 74 Messages

20 oct. 2008, 09:42

Ce que tu as fait représente déjà un sacré travail et je t'en félicite. Il ne te reste maintenant plus qu'a corriger les failles de sécurité
Arrêté donc avec ces failles de sécu : IL N'Y A PAS DE FAILLE DE SECU.
Un utilisateur sans login ni mot de passe n'a acces à aucune pages. (meme par modification d'url ou envoie de POST manuellement). Dans tout les cas il faut être authentifié

C'est comme si vous considériez que faire une suppression de tout vos fichiers une fois authentifié sur votre ordinateur etait une faille de sécurité :?

De plus OpenDCF peut fonctionner avec l'option SafeMode = On
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz

Mammouth du PHP | 965 Messages

20 oct. 2008, 10:21

Le safe-mode ne veux pas dire sécurisé d'ailleurs il vas disparaître en php6 : http://fr2.php.net/features.safe-mode.

Sinon pour l'outil c'est une bonne idée même chose que plus haut niveau design faudrait faire un effort (c'est pas vraiment long mais la ca fait très amateur) et aussi pour la securité, c'est des vrai verif en php qu'il faut faire une fois les formulaires passé pas seulement JS.

Bon courage.

Eléphant du PHP | 74 Messages

20 oct. 2008, 11:07

Sinon pour l'outil c'est une bonne idée même chose que plus haut niveau design faudrait faire un effort
Toutes les contributions sont les bienvenues :roll:


Le but de cette rc1 etait vraiment de savoir si il n'y avait pas de bug ou d'incohérence à l'utilisation.
Je ne peux pas me permettre de rester le seul développeur sur ce projet, et t'en que je ne sort pas une version 1.00 je ne peux pas me plaindre de ne pas avoir de développeur avec moi.
Depuis une semaine que cette version est testée, je suis tout de même très rassuré, et je pense sortir la version finale très prochainement, et soyé pas décu si je n'apporte pas toutes vos remarques mais s'il fallait attendre qu'un soft soit parfait avant de sortir, et bien .... il ne sortirait jamais. (pourtant certaines m'attire pas mal, en particulier le concept de CRUD dont à parlé HyWaN, couplé avec une pointe d'ajax ca peu etre magnifique -- et bien sure en POO :-) ),
Concernant l'HTML et le CSS, je sais que le forum de PHPFrance comporte des erreurs, mais c'est de la faute à PhpBB
HyWaN, je parlais de la page d'accueil de phpfrance (http://www.phpfrance.com/) , pas du forum :-)
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz