Développement PHP offshore : attention aux bonnes et mauvaises pratiques
Je suis régulièrement contacté par des développeurs freelances ou des sociétés offshore pour du développement ou du webdesign etc… Hier l’une d’elle m’a dont fait cette proposition et je leur ai demandé de fournir quelques exemples de ce qu’ils font. Cette société m’a donc envoyé 3 fichiers .php. Voici un petit florilège (extrait du mail réponse) de ce qu’on peut trouver. Les puristes apprécieront.
class Paging{
var $nResult;
var $nTotalPage;
=> développement en PHP4, nous en sommes maintenant en PHP 5.3
$pagination = new Paging();
=> la classe n’a même pas de constructeur, les sorties écran sont réalisées directement depuis la class. Quel splendide modèle d’abstraction.
return $strPagination;
=> vous avez des sorties écran et les retours de fonction ne contiennent rien;
$GLOBALS[« r »]
=> on parlera même pas de ça
if (!is_file(« config.php ») || !validUser()) {?> <script>document.location= « ../index.php »;</script><?php }
redirection en JS depuis un test PHP. je vous inviterai à voir la fonction header() en PHP, elle permet des trucs sympas comme les redirections avec l’entête Location. Un client désactive JS et il passe quand même.
$nFilter = $_GET[« selFilter »];
=> possible SQL injection. La base du développeur « Tu ne ferras jamais confiance aux données que l’utilisateur t’enverra »
if(isset($_GET[« page »]) && strcmp($_GET[« page »], « ») > 0)
=> que voulez-vous faire ? Regardez les fonction empty, is_numeric et intval. Elles éviteront aussi les injections SQL.
Et ce sur seulement 3 fichiers. Quoi qu’il en soit, ce qui est vraiment choquant c’est que les clients de cette société sont contents. Evidemment, les développements fonctionnent, ce qui est suffisant pour la majorité des clients vu que ceux ci ne connaissent strictement rien en développement. Mais les risques sont rééls, niveau évolution, sécurité tout est à revoir dans ces pages. Malheureusement cela fait partie des règles du jeu sur Internet, le seul conseil qu’on peut tirer de ce test : demandez toujours à avoir des fichiers d’exemples et faites les analyser par de vrais développeurs.
Laissez un commentaire