Netapsys Blog

Aller au contenu | Aller au menu | Aller à la recherche

Mot de passe & sécurité

J'écoutais les castcodeurs dernièrement, pour ceux qui n'écoutent pas encore cette perle du net c'est par ici: http://lescastcodeurs.com/

Dans une interview, ils parlaient de sécurité et notamment du fait que la plupart des personnes disposent du même mot de passe pour toutes leurs applications ou leur différents comptes email, accès réseaux, LDAP etc...

Bien sur, su le plan sécurité, cette pratique n'est vraiment pas au top. Le hic c'est que se souvenir de tous ses accès n'est pas forcement aisé.

En effet, mon cerveau n'est pas encore un disque dur (et c'est bien dommage). Pour cela il existe des programmes comme KeePass qui permettent de sauvegarder vos mots de passe en fonction de différents profils. J'utilise cet outil depuis un petit moment et il est vrai qu'il est bien pratique.

Je vais vous faire une petite présentation de celui ci.

Pour le télécharger http://keepass.info/download.html

Lire la suite...

[Astuces] Verrouiller automatiquement la session Windows via bluetooth

Vous ne pensez pas toujours à verrouiller votre session Windows / Linux / Mac ? Il y a dans votre entourage des petits plaisantins qui viennent de découvrir la combinaison de touches Ctrl-Alt-flèche et la testent sur votre ordinateur quand vous n'êtes pas là ? Ou bien tout simplement vous vous préoccupez de la sécurité ? Vos projets sont sensibles et la confidentialité est une obligation ?

Si vous vous reconnaissez un minimum dans l'une de ces descriptions, cette astuce est pour vous !

Ce billet vous aidera à verrouiller le poste de travail à l'aide d'un téléphone portable et de la connexion bluetooth. Notez bien que tout périphérique doté d'une connexion bluetooth fera l'affaire : un iPod, un Archos, une souris bluetooth, etc. Dans la pratique, il vous suffira d'éloigner le périphérique de votre poste de travail pour que votre PC se verrouille automatiquement ! Magique, non ?

Lire la suite...

Noël approche, je fais comme mes enfants : je fais ma liste !

Comme chaque année, décembre lance la période des vœux et des listes de cadeaux ... alors voici la mienne :

J'y mets les formes, c'est important !

"Cher père Noël, pour Noël je souhaite que mes développements respectent les contraintes suivantes :

  • Qu'ils répondent à ce qu'attend mon client (cela suppose que j'ai bien compris ce qu'il veut) ;
  • Qu'ils aient subi une large couverture de tests fonctionnels et techniques ;
  • Qu'ils soient réalisés dans le respect des délais et des charges prévus ;
  • Que leur facilité de maintenance démontre mon excellence technique."

Ma fille de 8 ans arrivant, elle me stoppe net : "Papa le père Noël n'existe plus (pas ??) depuis que j'ai 6 ans" (ouf le petit dernier n'a rien entendu !!)

J'encaisse le choc, reviens peu à peu à moi, prends une douche et me rase (important pour la suite) : là, seul face au miroir (je vous avais prévenu), je me dis que ce résultat doit quand même être accessible, père Noël ou pas !

Alors j'en appelle à vos nombreux commentaires pour répondre à cette question simple mais importante : "Quelles actions dois-je mettre en place sur mes projets pour démontrer à ma fille que le père Noël existe ??"

Pour ma part voici mes premières réponses issues de mes succès ... et aussi de mes erreurs !

1. Pilotage / Suivi

  • J'associe mon client au respect des engagements calendaires avec un suivi régulier tous les 15 jours et un accès permanent à mon tableau de pilotage (à détailler dans un prochain billet) : le PAQ rappelle les engagements des acteurs en terme de date de livraison mais aussi de délai de validation des travaux ;
  • Je mets en place dans la première semaine du projet, les accès client et équipe à la plateforme documentaire (ALFRESCO) et à l'outil de suivi de recette (JIRA) ;
  • Je valide la création de l'affaire et l'affectation des membres de l'équipe dans l'outil interne des comptes rendus d'activité (CRA) au lancement du projet ;
  • J'envoie un ordre du jour au moins 3 jours avant chaque réunion ;
  • J'envoie aussi un compte rendu au plus tard 3 jours après chaque réunion ;
  • Je demande au client de me fournir les documents applicables (à inscrire dans le PAQ) dont les tests techniques auxquels l'application sera soumise ;
  • Je réponds dans la journée à chacun des mails du client, au minimum pour l'avertir que je creuse la question ;
  • Je fais un point d'avancement quotidien avec mon équipe ;
  • Je remonte à mon manager direct (chef de projet ou directeur de pôle) tout risque de dérapage identifié.

2. Conception

  • J'implique les utilisateurs finaux du futur produit dans les travaux de conception en mettant en place par exemple des ateliers fonctionnels ;
  • Si je mets en place des ateliers fonctionnels, je m'appuie systématiquement sur une maquette réalisée avec le support de notre équipe infographie et accessibilité ;
  • Je respecte les outils retenus par le cadre normatif de mon client quand il existe, sinon je mutualise les succès en proposant les outils qui ont démontré leur efficacité sur nos autres projets ;
  • Je couvre les aspects organisationnels, fonctionnels, ergonomiques (dont l'accessibilité), techniques et sécuritaires ;
  • Je demande au client d'organiser une rencontre avec ses équipes d'exploitation et de validation technique de la future solution (quand elles existent) ;
  • J'identifie toutes les contraintes du projet et les fais valider par le client ;
  • J'adopte le langage UML.

3. Développement

  • Je demande à mon concepteur fonctionnel ou à mon chef de projet si un point de la spéc n'est pas claire
  • Je m'appuie sur la plateforme d'intégration continue (Maven, Hudson, Sonar) ;
  • Je m'appuie sur les plugins mis en place dans mon IDE pour identifier mes écarts par rapport à l'état de l'art ASAP (JDepend, Checkstyle, PMD, EclEmma, ...) ;
  • Je couvre mes classes métiers et mes classes complexes de tests unitaires (JUnit, DBUnit, ...) ;
  • Je fais participer au maximum les développeurs dans la définition des charges. Afin que l'engagement de l'équipe soit respecté et que ce soit l'équipe qui s'engage et pas forcément que le chef de projet ;
  • J'essaie de mettre en place des ateliers techniques pour que les développeurs puissent s'entraîner sur certaines tâches ;
  • Je n'hésite pas à renseigner Trac ou tout autre outils qui permettent de faire partager le savoir sur un point technique du projet ou sur la bonne pratique à avoir pour pouvoir implémenter tel ou tel code ;
  • Je n'hésite pas à demander à mes collègues leur opinion ;
  • Je croise certains développements et/ou tests afin de s'assurer que les bonnes pratiques sont effectivement utilisées et que l'implémentation des fonctionnalités de l'application soit compréhensible et maintenable par tous. Ne pas hésiter à remonter d'éventuels points trop complexes ou difficilement compréhensibles et proposer un refactoring ;
  • Lors de l'arrivé d'un nouveau développeur au sein de l'équipe, ne pas hésiter à faire, dans des proportions raisonnables, du pair programming afin qu'il puisse devenir opérationnel plus rapidemment.

4. Tests internes

  • J'automatise mes tests fonctionnels à partir d'outils type SELENIUM ;
  • Je valide tous les tests techniques (identifiés lors de l'étape 1) avant de livrer au client.

5. Livraison

  • Je package la livraison (application et documentation) en fonction des attentes du client ;
  • Je préviens le client au moins 15 jours avant la livraison et lui rappelle 3 jours avant par mail.

6. Support aux tests du client

  • J'accuse systématiquement dans la journée la prise en compte de sa demande et le préviens de la date de mise en place du traitement dès que je la connais.

Voilà donc mes premiers éléments de réponse, assez généraux, largement incomplets mais j'attends maintenant vos compléments ... alors à vos claviers !!

Open source, open faille & open troyen...

Open source ou propriétaires, tous les logiciels sont susceptibles de contenir des failles de sécurité ou des backdoors (c'est-à-dire des failles créées volontairement dans le but de prendre la main sur une application).

Les logiciels open source ont cependant un avantage, au moins psychologique, de poids : leur code étant pas définition accessible, chacun peut théoriquement lire et comprendre le code informatique qu'il utilise, déploie ou intègre dans d'autres logiciels. Cet argument est particulièrement valable pour les logiciels open source qui disposent d'une large communauté très active : le risque qu'une faille passe inaperçu décroit proportionnellement avec le nombre de contributeurs au projet...

Mais le risque n'est pas tout à fait le même lorsque vous faites un "copier/coller" d'un extrait de code sur un site, aussi sérieux soit-il (je pense par exemple au Blog Netapsys ! ;-) ).

Démonstration par l'exemple.

Lire la suite...

Pratiquer le design-pattern Strategy en 15 min

Dans ce billet, nous poursuivons les notions de design-pattern (motifs de conception).
Après le design-pattern Observer, étudions un autre motif de conception Strategy qui appartient aussi au groupe de comportement.
Ce motif de conception permet de définir plusieurs algorithmes interchangeables dynamiquement.

Encore un motif de conception qui répond à la question : Comment faire simple quand on peut faire compliqué ?
En fait, cela reste simple si on n'oublie pas de le pratiquer tôt. Sinon, ce sont les développements, les tests et les évolutions qui deviennent compliqués.
Mais, la revue de code permet aussi d'éviter de rendre les développements plus compliqués et de tirer profit de la mise en place de ces design.

D'un point de vue théorique, il est facile de l'appréhender. Néanmoins, la mise en pratique (avec le langage Java) de ce design reste un peu moins évidente.

Beaucoup d'entre nous l'ont déjà pratiqué sans, forcément, le savoir.
Un exemple de l'API Java est la méthode Collections.sort ayant deux arguments dont le second est l'algorithme de comparaison pour effectuer le tri.
Ainsi, cette méthode est fournie avec une implémentation par défaut qui convient à bon nombre de types de données avec la possibilité de redéfinir dynamiquement de nouveaux algorithmes de tri.

Notons enfin que dans l'exemple d'illustration ci-après, nous allons comparer deux entreprises déclarées dans des répertoires différents
Et par conséquent, les codes de référence et libellés sont variés et distincts d'un répertoire à un autre.
La comparaison est basée sur un score de pertinence qui est une moyenne de(s) différente(s) note(s) calculée(s).

Un seul pré-requis pour ce billet : connaître la notion de composition en programmation objet.

Lire la suite...

Pratiquer le design-pattern Observer en 15 min

Les design-pattern (ou motifs de conception) réalisent le principe de ne pas réinventer la roue en capitalisant les expériences.
En effet, un design-pattern décrit à la fois :

  • Les situations de conception que l'on rencontre trop souvent dans le développement de logiciels
  • Les solutions types (abstraites ou de haut niveau) identifiées pour ces problèmes (formelles ou non, indépendamment des langages objets)
  • Les bénéfices d'utiliser ces solutions dans le développement de logiciels.



Les design-pattern offrent donc une description complète des problèmes répétitifs et les solutions abstraites retenues en expliquant les conséquences à l'usage.
Cette description reste indépendante du langage objet et voire du métier développement de logiciels.
Néanmoins, notons que les design ne sont pas des briques logicielles.
Les design-pattern se divisent en trois groupes: les design de création, de structure et de comportement.
Dans ce billet, nous mettons en pratique le design-pattern "observer" faisant partie du dernier groupe.
L'exemple choisi est volontairement simpliste néanmoins il illustre bien une problématique réelle. L'exemple pratique s'appuie sur les classes/interfaces du package java.util
Le seul pré-requis est une petite dose d'abstraction.

Lire la suite...

Optimiser Tomcat : installation de Apache Tomcat Native

Le message suivant vous intrigue peut-être à chaque démarrage de tomcat :

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: …

Je vais vous présenter la procédure à suivre pour installer cette fameuse librairie native tomcat. Cette librairie permet d'améliorer les performances globales du serveur WEB (meilleure génération des identifiants de session, entrées/sorties fichier …).

Lire la suite...

Lynx, le retour de la Geek attitude ?

Qu'est ce que Lynx ?

Lynx est un navigateur en mode texte. Pourquoi utiliser ce genre de navigateur ? Pour cultiver la geek attitude! Oui, cela peut être une bonne raison. Mais, il y a beaucoup plus intéressant lorsqu'on sait que notre ami Google voit les pages de notre site comme le voit un peu Lynx. Google se comporte comme un interprète d'écran braille et ne voit que du texte pour constituer son immense catalogue de pages web. Lynx est donc un bon moyen pour tester la façon dont Google voit notre site.

site Netapsys vue par Lynx

Lire la suite...

Un utilitaire intéressant pour tester un site sous différentes versions d'ie : IETESTER.

Il nous arrive fréquemment de développer des sites internet ou intranet et en tant que Webmaster, il n'est pas facile de tester son site sous toutes les versions d'internet explorer. Il y a alors plusieurs solutions :

  • Installer un ie6 standalone mais il y a parfois de légères différences entre la version ie6 et la version standalone.
  • Une autre solution est de monter une virtual machine en installant un Windows xp avec la version d'internet explorer désirée.

Je vous propose un autre outil qui est encore en cours de développement mais qui mérite d'être suivi attentivement : IETESTER.

Vous pouvez retrouver le projet à l'adresse suivante : IETESTER

Dans la version 0.3 d'IETESTER on peut tester un site de la version 5.5 à ie8 RC1.

IETESTER

Cependant IETESTER n'est qu'un outil pour vérifier rapidement les différences entre chaque version d'internet explorer et je pense que pour être sûr ça ne vaut pas l'installation d'une VM avec la version d'ie à tester.

Rigueur et sécurité

La nouvelle est abondamment relayée depuis sa parution. Le SANS Institute et MITRE Corporation ont publié le TOP 25 des erreurs de programmation pouvant provoquer de sérieux problèmes de sécurité. Cette liste a été élaborée conjointement entre différents organismes et sociétés impliquées dans le domaine de la sécurité informatique, et comporte les 25 erreurs les plus communément répertoriées. Ces erreurs concernent le développement web et les risques au niveau de la sécurité concernent aussi bien le côté serveur (donc l'applicatif et le fournisseur du service) que le côté client (concerne donc l'utilisateur du service). Les détails sont donnés en lien à la fin de l'article. Voyons par contre les tendances générales.

Lire la suite...

- page 1 de 2