mercredi 16 novembre 2011

MySQL - Les moteurs de stockage

Le Système de gestion de base de données MySQL permet d'associer à chaque table un moteur de stockage assurant des fonctionnalités telle que les transactions, l'indexation, les algorithmes.

Par défaut, le moteur de recherche disponible est MyISAM. Ce moteur ne risque pas d'être supprimer par le DBA. Par contre, on peut ajouter un moteur de stockage à l'aide de commande « Install plugin StockageName ». La commande « Uninstall Plugin » permet de supprimer le même moteur.

MyISAM est basé sur ISAM mais il ne supporte pas les transactions. Par défaut, le type des tables est MyIsam
CREATE TABLE t (i INT) ENGINE = MYISAM;


L'InnoDB est le moteur le plus utilisé. Il est le leader des moteurs de stockages transactionnel. InnoDB intègre plusieurs fonctionnalités comme la réplication, les procédures stockées, les triggers et les vues.
Créer une table au format InnoDB :
CREATE TABLE TableName (Field1 Int, Field2 Int) TYPE = InnoDB;


Si vous avez besoin de stocker temporairement des données, le moteur Memory peut être utile. Les données d'une table Memory sont stockées dans la mémoire. En cas de clash ou redémarrage du serveur, les données seront perdues.
La commande suivante permet de créer une table au format Memory :
CREATE TABLE TableName (Field1 Int, Field2 Int) ENGINE = MEMORY;


L'utilisation d'une table Merge est fortement conseillée si vous devez gérer plusieurs tables historiques identiques ou bien de répartir une grande table, en lecture seul dans différents endroits du disque.


Si vous avez besoin d'optimiser le stockage des informations, il faudra utiliser le moteur Archive. Il est impossible de mettre à jour la table en ligne avec ce moteur.
 L'option qui permet d'activer le moteur :
--with-archive-storage-engine

dimanche 16 octobre 2011

La stratégie sécurité de Microsoft : Le projet Palladium (2002) rebaptisé en Secure Boot

Avec Windows 8, Microsoft a fait part de sa volonté d'implémenter la dernière version de l'UEFI (Unified Extensible Firmware Interface), le successeur du BIOS. L'éditeur entend ainsi imposer aux constructeurs la fonctionnalité Secure Boot.
Microsoft a déjà tenté ce coup de à travers le projet Palladium en 2002.  A cette époque, Microsoft s'est allié avec la fine fleur de l'industrie informatique, rassemblée dans un consortium baptisé TCPA (Trusted Computing Platform Alliance), outre le géant de l'édition, Intel, HP-Compaq et IBM. Leur objectif était de modifier entièrement le mode de traitement des données sur ordinateurs, grâce à des modifications matérielles en implantant Palladium DRM (Digital Rights Management) sur une puce hadware, initialement sur la carte mère, plus tard intégrée au processeur, et qui utilise des flux de cryptage matériels. Le but est d'associer un drapeau à chaque fichier sur l'ordinateur, avec une signature numérique informant un serveur distant de sa nature. Si ce fichier est interdit, le serveur se charge de le bloquer.
Selon Microsoft, il s'agit d'une tentative pour mettre un terme à l'échange des mp3 ou autres. Microsoft a assuré que cela permettra de renforcer la confidentialité des données personnelles, d'empêcher la copie privée d'œuvres sous copyright et d'augmenter le contrôle des entreprises sur leur parc informatique.  Donc en d’autre terme, limiter la concurrence des logiciels libres puisque les développeurs indépendants seront dans l’obligation de certifier leurs programmes. 
Le projet Palladium est annulé en 2002, la même année, suite à l’opposition de la Commission européenne pour son coût élevé. Mais l’éditeur de Windows ne lâchera jamais prise et voilà que le projet Palladium renaît de ses cendres sous le nom de Secure Boot.

jeudi 4 août 2011

Les attaques de fixation de session


  Le protocole HTTP crée une session pour retenir certaines informations concernant l’utilisateur lors de la navigation. Celle-ci peut être la cible d'attaques pour pouvoir usurper l'identité du visiteur connecté et se faire passer pour lui en lui "volant" sa session.
  Dans un site programmé en PHP, tous les utilisateurs sont vulnérables s'il utilise seulement session_start(). Si le hacker est capable de récupérer l'ID de votre session active, il pourra l'utiliser en l'initialisant par la querystring (page.php?PHPSESSID=identifiant).
  Pour contrer cette vulnérabilité, on peut utiliser la fonction built-in de PHP session_regenerate_id() qui génère un nouvel identifiant de session lors de la vérification de l'initialisation.

<?php
session_start();

if( !isset($_SESSION['initialized']) ) {
  session_regenerate_id();
  $_SESSION['initialized'] = true;
}
?>

À la fin, assurez-vous aussi de détruire la session, que ce soit par un mécanisme de déconnexion ou par une expiration forcée par le serveur (voir php.ini ou ini_set).

<?php session_destroy(); ?>

mercredi 3 août 2011

Pourquoi le userid du premier user sur joomla commence toujours par 62 ?


Si vous venez d’installer Joomla pour la première fois vous remarquerez que id du user administrator commence par 62 et non pas par 1 pourtant le champ est AUTO_INCREMENT  

Pourquoi le champ ne commence pas par 1 ??

Ce calcul explique tout:

a   d    m   i    n   i    s    t    r   a    t    o    r

1 + 4 + 13 + 9 + 14 + 9 + 19 + 20 + 18 + 1 + 20 + 15 + 18 =

1 + 4 +  4 + 9 +  5 + 9 +  1 +  2 +  9 + 1 +  2 +  6 +  9 = 62

samedi 30 juillet 2011

Piratage 'classique' d'un site web

   Le rêve tunisien c’est devenir un hacker… Les photos de profils sur les réseaux sociaux regorgent des masques de Guy Fawkes en référence à anonymous –bien qu’anonymous ne sont pas des pirates dans le vrai sens du terme-. 
   J’ai toujours respecté les hackers. Des gens ingénieux et serviables... et je serai ravie de vous mettre sur le droit chemin afin de réaliser votre rêve.
   Je pratique le développement web depuis 3 ans. Viser un site tunisien est la tâche la plus simple à faire : Mon ancien employeur, par exemple utilise le même login, le même mot de passe et la même adresse url pour se connecter en backoffice sur tous ses sites et depuis 10 ans déjà. Très astucieux pour se protéger... Aucun de ses clients ne pensera qu’il est aussi bête pour se faire avoir de cette manière. 
   Bon, commençons notre premier cours : pirater un site en devinant son mot de passe.
  Pour un site drupal c’est carrément impossible de deviner le mot passe de l’administrateur puisque le backoffice n’est pas assemblé dans un sous-domaine à part comme celui de joomla ou prestashop. Et de façon générale, l’intégrateur web ne laisse pas la main au client pour ce genre site à cause de la complexité de sa manipulation. Moi, en tout cas, je n’ai jamais réussi à pénétrer un site drupal.
  Pour un site réalisé sous prestashop le plus dur est de deviner le sous domaine de backoffice puisque l’intégrateur le renomme lors de l’installation. Donc essayez dans un premier temps de le deviner. Généralement on utilise admin, backup ou console. Reste à connaitre maintenant l’adresse mail du développeur. On peut facilement l’avoir avec une petite recherche sur google ou parfois en commentaire sur le code source du projet. A 90% le mot de passe est 123456.
  Le plus simple à pirater chez nous est un site réalisé sous joomla et le plus agréable est que les tunisiens utilisent rarement un CMS autre que celui-là. Le sous-domaine du backoffice est administrator, le login c’est admin et le mot passe est soit admin, soit 123456. Ce coup marche pour 50% des sites. Donc essayez toujours.

dimanche 17 juillet 2011

Le reCAPTCHA - un projet de capitalisation des connaissances

  60 millions captchas sont résolus tous les jours, représentant 150 000 heures de travail. Un travail effectué en pure perte, puisque le test est immédiatement supprimé.

  En 2009, New York Times a eut l'idée de numériser ses archives à l'aide du projet reCAPTCHA. Les OCR (Optical Character Recognition, Reconnaissance Optique de Caractères) restent moins habiles à lire des textes que les humains. En faisant lire un texte numérisé par un être humain dans le cadre d'un CAPTCHA, ce dernier prouvera qu'il n'est pas un robot et transformer son effort en travail utile. Les CAPTCHA fournissent une armée de volontaires... involontaires. Ahhh!! J’ai toujours adoré les initiatives pour la capitalisation des connaissances.

   La grosse différence avec les CAPTCHA est que dans ces derniers, il faut connaître la valeur de la chaîne pour savoir si la réponse fournie par l'utilisateur est correcte. Justement, en OCR, on cherche à numériser un texte inconnu. ReCAPTCHA propose alors des CAPTCHA à 2 textes : l'un est déjà résolu, et l'autre n'est pas encore résolu. Au passage, reCAPTCHA.com collecte les numérisations et s'en sert dans le cadre de projets de bibliothèque virtuelle.

Utilisation de Recatcha en PHP

  L'utilisation de reCaptcha se fait via un service Web. Pour pouvoir utiliser ce service, il faut s'inscrire sur le site de http://www.recaptcha.com/, à l'aide d'une simple adresse courriel. A partir de la, il faut ajouter une liste de site Web : pour des raisons de sécurité, il n'est pas possible de partager une clé entre plusieurs domaines. Il y au une clé publique et une clé privée.
  Recaptcha.com propose une bibliothèque PHP avec des fonctions qui simplifient l'utilisation de recaptcha, et les limite à 2 appels de fonctions.
<?php
  echo recaptcha_get_html($publickey, $error);
?>


<?php
    $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);
//    $resp->is_valid : succes du test
//    $resp->error    : message d'erreur retourn&eacute;
?>