Skip to main content

Réglages courants de WampServer

Les réglages ci-dessous sont courants pour une installation de Wamp Server toute fraîche.

Changer le répertoire root du serveur

C’est le répertoire qui s’affiche lorsqu’on lance Wamp et que l’on va sur localhost (ou 127.0.0.1) dans son navigateur. Par défaut, c’est le dossier /www du répertoire d’installation de Wamp.

Éditer le fichier C:\Program Files\Wamp\bin\apache\apachex.y.z\conf\httpd.conf et modifier la directive DocumentRoot pour la faire pointer vers le répertoire choisi. De plus, il faut également modifier quelques lignes en-dessous le chemin dans la balise <Directory>.

Envoyer des mails

Il vous faudra pour cela le programme Fake Sendmail (à extraire dans un dossier sendmail du répertoire d’installation, par défaut C:\wamp).

Ouvrir votre fichier php.ini (par défaut dans C:\wamp\bin\apache\apacheX.Y.Z\bin) et chercher l’option sendmail_path. La décommenter (enlever le point-virgule au début) et ajouter le chemin vers sendmail, comme suit :

sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

Enregistrer et fermer le fichier, puis redémarrer Wamp Server.

Il vous faudra ensuite écrire le code permettant d’envoyer un email. En PHP, je passe par la librairie PHPMailer. Télécharger la dernière version, puis récupérer les fichiers suivants (pas besoin des autres fichiers pour une simple fonctionnalité d’envoi d’emails) :

Cette librairie PHP est très populaire, et beaucoup de développeurs l’incluent dans leur projet pour sa simplicité. De ce fait, elle constitue une cible de choix pour les pirates : plusieurs vulnérabilités ont été découvertes par le passé, corrigées immédiatement par la communauté de développement très active sur ce projet. Il faudra donc bien veiller à la mettre à jour régulièrement, simplement en téléchargeant les nouveaux fichiers et en les extrayant à la place des anciens. Vous pouvez d’ailleurs écrire un petit script à cette fin.

Placez les fichiers dans un même dossier de votre projet, incluez le fichier PHPMailerAutoload.php (et seulement celui-ci), puis écrivez une fonction d’envoi d’emails.

Voilà la fonction d’envoi d’emails que j’utilise ; pas parfaite, mais elle convient à mes besoins.

// Constantes
define("EXPEDITEUR_NOM", "Vous");
define("EXPEDITEUR_ADRESSE", "noreply@votredomaine.tld");

// Permet de déterminer si on est en dev ou en prod
if($_SERVER['HTTP_HOST'] == 'votredomaine.tld'){
	define('ENV', 'prod');
	define("SMTP_HOST", "127.0.0.1");
	define("SMTP_PORT", "25");
	define("SMTP_USERNAME", "");
	define("SMTP_PASSWORD", "");
}
else {
	define('ENV', 'dev');
	define("SMTP_HOST", "127.0.0.1");
	define("SMTP_PORT", "25");
	define("SMTP_USERNAME", "");
	define("SMTP_PASSWORD", "");
}

// La fonction en tant que telle
// Remarque : $to peut être une adresse email ou un Array d'adresses email
function send_mail($to, $sujet, $message, $fromName, $fromEmail){
	$mail = new PHPMailer;
	$mail->setLanguage('fr', 'phpmailer.lang-fr.php');
	$mail->isSMTP();
    $mail->XMailer = ' ';
    $mail->Port = SMTP_PORT;
    $mail->Host = SMTP_HOST;

    if(ENV == 'dev'){
        $mail->SMTPDebug = 3;
        $mail->SMTPAuth = false;
    }
    else {
        $mail->SMTPDebug = 0;
        $mail->SMTPSecure = 'tls';
        $mail->SMTPAuth = true;
        $mail->Username = SMTP_USERNAME;
		$mail->Password = SMTP_PASSWORD;
    }

	$mail->AddReplyTo($fromEmail, $fromName);
	$mail->From = EXPEDITEUR_ADRESSE;
	$mail->FromName = EXPEDITEUR_NOM;

	if(gettype($to) == 'array'){
		foreach($to as $adresse){
			$mail->AddBCC($adresse);
		}
	}
	else {
		$mail->addAddress($to);
	}

	$mail->WordWrap = 50;
	$mail->isHTML(true);

	$mail->Subject = "=?utf-8?b?".base64_encode($sujet)."?=";
	$mail->Body = $message;

	if($mail->send()) {
		return true;
	}
	else {
		return $mail->ErrorInfo;
	}
}

J’utilise une petite condition au début pour savoir si on est en environnement de dev ou de prod. Vous pouvez ainsi avoir des réglages SMTP différents selon l’environnement. Pour la configuration que je vous propose dans cet article, c’est à dire en travaillant en local sur votre machine Windows, il faut laisser le serveur à 127.0.0.1 sur le port 25 en local. Pour votre environnement de prod, c’est à vous de régler les paramètres.

Pour finir, afin de recevoir les emails, je vous propose le très pratique Papercut qui émulera un serveur mail sur votre ordinateur. Lorsque vous enverrez des emails depuis votre application web en développement, ceux-ci seront reçus par Papercut. Ainsi, vous n’aurez pas besoin de dépendre d’un service externe. Il suffit simplement d’installer et lancer ce logiciel pour l’utiliser :

Dernière astuce pour les emails : je vous conseille d’utiliser ce template d’email HTML. Il est simple, propre, et fonctionne dans tous les webmails et logiciels, desktop et mobile.

Rendre accessible Wamp sur votre réseau local

Par défaut, vous ne pouvez pas accéder à votre serveur Wamp depuis une autre machine. Pourtant, cela peut être utile pour tester son application ou son site web depuis une autre configuration (résolution différente, test sur mobile…).

Pour cela, ouvrir le fichier httpd.conf (par défaut dans C:\wamp\bin\apache\apacheX.Y.Z\conf) et chercher l’expression Require local (chez moi, autour des lignes 280). Cette instruction autorise votre propre PC. Sur la ligne du dessous, ajoutez alors :

Require ip a.b.c.d

où a.b.c.d est l’adresse IP du PC que vous souhaitez autoriser. Si vous le souhaitez, vous pouvez également écrire seulement les premiers octets de l’adresse IP afin d’autoriser tout votre réseau local, ou utiliser la notation CIDR :

Require ip a.b.c
Require ip a.b.c.0/24

La plupart du temps, votre réseau local sera 192.168.0.0/24. Toutefois, vérifiez bien sur quelle réseau vous vous trouvez à l’aide de la commande ipconfig sur Windows ou ifconfig sur Linux.

Attention, cette astuce est valable pour la version 2.4+ de WampServer, qui utilise Apache 2.4.x au minimum. Pour les versions antérieures, il y a une autre syntaxe. Profitez-en pour mettre à jour WampServer, ça fait pas de mal !

Enregistrer et fermer le fichier, puis redémarrer Wamp Server.

Configurer cURL pour le HTTPS

Si vous avez à utiliser cURL pour récupérer du contenu depuis d’autres sites web, vous avez sans doute eu des petits soucis pour joindre les sites en HTTPS. En effet cURL pour fonctionner a besoin de savoir à quels certificats ils peut faire confiance. Or par défaut, aucune configuration n’est faite, cURL ne fait donc confiance à aucune connexion HTTPS et on se retrouve bien embêté.

Beaucoup de solutions sur Internet préconisent d’utiliser les options CURLOPT_SSL_VERIFYPEER à false ou encore CURLOPT_SSL_VERIFYHOST à 0, mais c’est une très mauvaise chose, car cela indique que cURL ne doit faire aucune vérification sur les certificats qu’ils rencontre. Aïe !

On va plutôt passer par la solution intelligente et installer la bibliothèque de certificats à qui cURL doit faire confiance. Pour cela, téléchargez le fichier cacert.pem depuis le site officiel de cURL, puis placez-le où vous le souhaitez sur votre disque-dur (j’ai choisi de le mettre dans C:\wamp\bin\php). Ce fichier, mis régulièrement à jour, contient la base de certificats des autorités de certification (qui permettent de signer les certificats des sites web) que Mozilla intègre dans son navigateur Firefox.

Il faut ensuite dire à PHP d’utiliser cette bibliothèque de certificats. Pour cela, il faut éditer vos fichiers php.ini (c’est à dire, celui du dossier C:\wamp\bin\apache\apacheX.Y.Z et celui du dossier C:\wamp\bin\php\phpu.v.w) et rajouter ces options :

curl.cainfo = "C:/wamp/bin/php/cacert.pem"
openssl.cafile = "C:/wamp/bin/php/cacert.pem"

Vérifiez également que la ligne suivante est décommentée (pas de point-virgule au début) :

extension=php_openssl.dll

On termine en relançant tous les services de WampServer.

Installez une autre version de PHP, Apache ou phpMyAdmin

Si vous souhaitez installer une autre version de PHP sur WampServer (pour faire une mise à jour, ou alors parce que vous devez vous adapter aux contraintes de l’environnement de production de votre société), l’opération est assez simple. Prenons pour exemple PHP.

Commencez par télécharger la version de PHP depuis le site officiel. Prenez de préférence une version Thread Safe. Différentes versions de « VC » existent : elles dépendent de la version du package de Visual C++ installée sur votre ordinateur. Sauf contraintes, VC11 est un bon choix, car il sera vraisemblablement déjà installé sur votre ordinateur. Si vous avez un message d’erreur lors du lancement de Wamp à cause d’une DLL manquante, vous pouvez télécharger le package redistribuable de Visual C++ manquant ici.

Extrayez l’archive dans le répertoire d’installation de WampServer, sous-répertoire bin/php/phpX.Y.Z (X.Y.Z étant la version de PHP à installer). Allez dans le dossier de la version précédente de PHP (appelons-la U.V.W) préinstallée dans WampServer, et copiez les fichiers suivants :

  • php.ini
  • phpForApache.ini
  • wampserver.conf

Collez ces fichiers dans le répertoire de la nouvelle version de PHP. Ouvrez les fichiers .ini et remplacez la chaîne U.V.W (correspondant à l’ancienne version) par X.Y.Z (correspondant à la nouvelle version) avec un coup de Rechercher et remplacer.

Quittez puis relancez WampServer. Cliquez sur l’icône près de l’horloge avec le bouton gauche, allez dans PHP, Version, puis sélectionnez la version que vous venez d’installer. WampServer recharge les paramètres, et c’est tout bon !

Pour Apache, télécharger votre version ici et copier les fichiers :

  • conf/httpd.conf
  • conf/extra/httpd-vhosts.conf
  • wampserver.conf

Pour phpMyadmin, télécharger votre version ici et copier les fichiers :

  • config.inc.php

Attention, phpMyAdmin s’installe dans apps/ et non dans bin/. De plus, vous devrez modifier le fichier alias/phpmyadmin.conf et wampmanager.conf de WampServer pour y rechercher et remplacer le numéro de version de phpMyAdmin.

N’oubliez pas d’éditer les fichiers copiés et rechercher/remplacer les numéros de version.

Je vous invite à considérer les deux alternatives suivantes, respectivement à MySQL et phpMyAdmin : MariaDB (qui est open source) et SQL Buddy (qui fait moins usine à gaz). Ils s’installent et s’utilisent de la même façon que MySQL et phpMyAdmin.

Créer des vhosts

La création de virtual hosts vous permettra de gérer plus facilement votre environnement de travail si vous développez plusieurs projets à la fois.

Pour ajouter un virtual host, éditer le fichier C:\Program Files\Wamp\bin\apache\apachex.y.z\conf\extra\httpd-vhosts.conf. Ajouter un bloc tel que celui-ci :

<VirtualHost *:80>
    ServerAdmin VOTRE_ADRESSE_EMAIL
    DocumentRoot "CHEMIN_ABSOLU_VERS_DOSSIER_DE_DEV"
    ServerName NOM_DE_DOMAINE_SOUHAITE
    ErrorLog "logs/NOM_DE_DOMAINE_SOUHAITE.error.log"
    CustomLog "logs/NOM_DE_DOMAINE_SOUHAITE.access.log" common
</VirtualHost>

Bien sûr, ceci constitue simplement la base ; si vous souhaitez mettre en place le HTTPS (bien que l’intérêt soit limité sur un environnement de dev), vous pouvez remplacer le port 80 par le port 443, et ajouter les autres directives courantes pour la mise en place du HTTPS.

Quant au nom de domaine souhaité, vous pouvez indiquer ce que vous souhaitez. Généralement, on choisit NOM_PROJET.local, par exemple blog.local.

Nous allons maintenant éditer le fichier C:\Windows\System32\drivers\etc\hosts afin d’ajouter une entrée pour notre nom de domaine. Rajouter une ligne telle que celle-ci dans le fichier :

127.0.0.1 NOM_DE_DOMAINE_SOUHAITE

Ainsi, quand vous tenterez d’accéder à votre nom de domaine, votre ordinateur n’aura pas à effectuer de requête DNS : c’est votre ordinateur qui réceptionnera la requête, et Wamp qui la prendra en charge. Grâce au virtual host, Wamp saura dans quel dossier se trouvent les fichiers auxquels vous tentez d’accéder.

D’autres idées ?

Si vous avez d’autres suggestions pour étoffer cet article d’astuces concernant WampServer, n’hésitez pas à l’inscrire ou à poser une question dans les commentaires !

Lire la suite

Garder un système Windows 7 sain

Si vous êtes comme moi et que vous êtes pas fan du nouveau Windows 10, et que vous n’avez pas fait la migration vers un Windows 8, la pression de Microsoft doit pas mal vous souler, et vous résistez avec force pour garder votre Windows 7 aussi longtemps que possible. Après tout, le support étendu (mises à jour de sécurité) de Windows 7 durera jusqu’en janvier 2020.

Voici donc quelques conseils pour supprimer les merdes qui sont poussées automatiquement.

Supprimer l’icône de mise à jour vers Windows 10

Cette icône ouvre une fenêtre vous informant que vous avez « Réservé Windows 10 » et que la mise à jour se fera dès que possible. Pour la supprimer, il faut aller dans le Panneau de configuration, Désinstaller un programme, Afficher les mises à jour installées, puis rechercher la mise à jour KB3035583. La désinstallation sera très rapide, puis vous serez invités à redémarrer Windows.

Supprimer le dossier de Windows 10

Même si vous n’avez fait aucun pas vers la mise à jour de Windows 10, Microsoft a quand même pris l’initiative de télécharger tous les fichiers nécessaires à l’installation de Windows 10. Et ça prend plusieurs gigas d’espace disque ! Pour vérifier si c’est bien le cas sur votre ordinateur, allez à la racine de votre disque C. Faites en sorte d’afficher les fichiers et dossier cachés, et vous devriez voir un dossier nommé $Windows.~BT.

Vous constaterez que vous ne pouvez pas le supprimer simplement. Pour pouvoir le supprimer, il faudra lancer des commandes depuis un terminal (menu Démarrer, taper cmd, faire un clic-droit sur le programme puis choisir « Exécuter en tant qu’administrateur »).

Exécuter en tant qu'administrateur

Tapez ou copiez-collez alors les commandes suivantes (une par une) :

takeown /F C:\$Windows.~BT\* /R /A
icacls C:\$Windows.~BT\*.* /T /grant Administrateurs:F
rmdir /S /Q C:\$Windows.~BT

Vous verrez plein de lignes défiler très vite dans le terminal, c’est normal : Windows change les droits de tous les fichiers et dossiers du répertoire, puis vous les supprime enfin grâce à la dernière commande. Toutefois, chez moi, j’ai dû manuellement aller supprimer des dossiers qui restaient vides mais impossibles à supprimer en ligne de commandes.

Il faut terminer l’opération avec un coup de CCleaner afin de supprimer des fichiers temporaires, pour gagner la même taille que ce dossier (oui, il en a foutu de partout).

Supprimer les mises à jour de tracking

Windows 10 a été très critiqué à sa sortie pour toutes ses indiscrétions. Beaucoup d’informations sont envoyées sur vous ou votre ordinateur à Microsoft afin de vous proposer de nouvelles fonctionnalités. Ce n’est pas gênant en soi si on choisit d’adhérer à ce modèle économique, toutefois quand les mêmes fonctionnalités sont poussées discrétos sur Windows 7 via des mises à jour sans que Microsoft ne communique dessus, c’est un peu plus gênant.

Comme pour la première étape, il vous faudra supprimer les mises à jour suivantes : KB3068708, KB3022345, KB3075249 et le numéro complémentaire KB3080149. Il se peut que vous n’ayez pas chacune de ces mises à jour installées (les deux dernières concernent à priori Windows 8), toutefois vous devriez avoir à coup sûr la première. Update : vous pouvez également supprimer (ou du moins, ne pas installer) la mise à jour KB3173040.

Éviter que les mises à jour reviennent

Z’ont prévu le coup chez Microsoft : si vous désinstallez une mise à jour, ils vous la reproposent par la suite. Si vous avez automatisé les mises à jour, vous êtes partis pour vous retaper la procédure la semaine prochaine. Heureusement, il est possible de masquer des mises à jour pour qu’elles ne vous soient plus proposées.

Pour cela, ouvrez le menu Démarrer, tapez update puis sélectionnez Windows Update. Faites un clic-droit sur les mises à jour évoquées, et sélectionnez Masquer la mise à jour.

Masquer la mise à jour Windows 10

Pensez aussi à faire un tour dans les mises à jour facultatives !

Masquer la mise à jour Windows 10

Désactiver le mouchard Diagnostics Tracking Service

Une info un peu plus ancienne cette fois, mais du même genre que les autres : en mai 2015, Microsoft a introduit le Diagnostics Tracking Service. Comme le dit Korben, « on ne sait pas quelles sont les données qu’il collecte et qu’il transmet ». Par précaution, je préfère le désactiver.

Pour cela, ouvrez le menu Démarrer, tapez services puis faites Entrée. Dans la nouvelle fenêtre, cherchez la ligne Diagnostics Tracking Services, faites un clic-droit dessus puis allez dans les propriétés. Il vous faudra arrêter le service et choisir « Désactivé » en type de démarrage.

Désactiver le Diagnostics Tracking Service

Pour finir

Je sais ce que beaucoup vont me dire : passe sur Linux. Il se trouve que je joue beaucoup, du coup Linux n’est pas une option (hormis éventuellement en double boot), que dans le cadre du boulot, on est amenés à utiliser l’outil que tout le monde utilise, à savoir Office (me parlez pas de cette horreur d’OpenOffice/LibreOffice qui date d’un autre siècle) et que malheureusement, les habitudes ont la vie dure… J’aime la simplicité et la facilité de Windows, donc pour le moment, je préfère essayer de faire avec. On verra en 2020 🙂

Je vous invite à mentionner dans les commentaires d’autres astuces pour supprimer des outils de tracking dans Windows 7. Indiquez aussi la source si vous le pouvez !

Sources

Ci-dessous les liens vers les astuces mentionnées.

Lire la suite

Retrouver l’espace perdu sur une carte SD

Si vous faites des bidouillages sur votre Raspberry Pi, vous avez peut-être dû vous rendre compte qu’une fois votre carte SD formatée (avec Raspberry Pi, OpenELEC ou autre), il était difficile de revenir à la capacité d’origine de votre carte SD. Mais ça, c’était avant.

Pour formater une carte SD, et donc retrouver la taille d’origine de votre carte SD, j’ai trouvé un petit utilitaire qui s’appelle SD Formater. Pour le télécharger, dans la colonne de gauche, cliquez sur « SD Formatter 4.0 for Windows Download » ou « SD Formatter 4.0 for Mac Download » (selon votre cas, bien entendu), et cliquez sur « I accept » en bas de la page.

Décompressez l’archive, installez et lancez le logiciel (après avoir inséré votre carte SD). Sélectionner si besoin la lettre de votre lecteur de carte SD (normalement, elle est sélectionnée automatiquement). Cliquez simplement sur Format pour lancer l’opération, et cliquez sur OK deux fois pour confirmer l’effacement complet de la carte.

SDFormater 4.0

Même si la fenêtre principale du logiciel vous annonçait que la carte ne faisait que quelques Mo (capture ci-dessus), la fenêtre de confirmation qui apparaîtra après le formatage de la carte montrera qu’il a bien détecté la capacité totale de la carte (capture ci-dessous).

SDFormater 4.0

À l’avenir, si jamais vous souhaitez profiter de l’espace restant sur votre carte après l’installation d’OpenELEC, vous pouvez partitionner votre carte SD de sorte d’avoir une partition de la taille de l’OS que vous souhaitez installer (~ 150 Mo pour OpenELEC, par exemple), et une autre partition plus volumineuse qui vous permettra de stocker vos fichiers. Cependant, la deuxième partition que vous créerez ne sera pas visible sous Windows, car ce dernier ne détecte que la 1e partition d’un support amovible.

Lire la suite

La sécurité des formulaires PHP

Il est un domaine que l’on ne doit pas oublier lorsque l’on réalise des formulaires en PHP, c’est la sécurité. En effet, les formulaires sont très souvent liés à une adresse mail ou à une base de données ; il est donc judicieux de protéger ces éléments-clé d’un système d’information.

Loin d’être un guide absolu dans le domaine, cet article regroupera quelques bonnes pratiques pour sécuriser un formulaire que j’ai glanées au fil du web.

Choisir la méthode du formulaire

Le premier choix qui s’impose lors de la réalisation d’un formulaire, c’est la méthode de transmission des données d’une page à une autre. Il en existe deux : GET, et POST. Alors que la méthode GET transmet les variables récupérées dans un formulaire par l’URL, la méthode POST les transmet de façon masquée.

Il vous faudra donc choisir, au cas par cas, si les variables récupérées peuvent être affichées au visiteur dans l’URL, ou non. Notez que ce n’est pas parce que les variables sont transmises en POST qu’elles sont totalement invisibles, chiffrées ou sécurisées ; il reste possible de les afficher (ou plutôt, de les intercepter) avec des outils.

Les failles XSS (Cross Site Scripting)

Pour profiter d’une faille XSS, l’attaquant va tenter d’insérer un code (JavaScript, le plus souvent) dans un input d’un formulaire non protégé, ceci afin de modifier le fonctionnement de la page. Prenons le cas d’un forum ; un attaquant pourrait, en exploitant une faille XSS, faire en sorte de subtiliser le cookie de connexion de chaque utilisateur qui se connecterait à ce forum. Ou alors, rediriger tous les utilisateurs vers une page de connexion ressemblant trait pour trait à la charte graphique du forum, mais qui en fait ne servirait qu’à récupérer leurs identifiants de connexion.

Les injections SQL

Pour exécuter une injection SQL, l’attaquant va tenter d’insérer un code dans un input d’un formulaire non protégé qui est relié à une base de données. Ce code peut servir à supprimer tout ou partie de la base de données ! Mais dans le pire des cas, une injection SQL peut permettre d’outrepasser le système d’authentification d’un site, afin d’y entrer sans autorisation (et voir, d’y entrer avec les privilèges de l’administrateur).

Insertion dans une base de données

Pour être sûr que des attaquants n’exécutent pas des injections SQL sur notre base de données, nous devons protéger l’insertion d’une saisie utilisateur grâce aux fonctions :

  • mysql_real_escape_string() : échappe les caractères spéciaux (notamment ‘  » et NULL) par un antislashs ; étant donné que c’est une fonction de MySQL, vous aurez besoin de vous connecter à votre base avec un mysql_connect() avant de pouvoir l’utiliser
  • addslashes() : réalise la même chose que mysql_real_escape_string(), mais n’est à utiliser que si vous utilisez un type de base de donnée qui ne propose pas ce genre de fonction

Dans le cas où le site que vous développez ne requiert pas que les utilisateurs aient un jour à saisir du code informatique dans leurs messages, on peut utiliser la fonction strip_tags() afin de purement et simplement supprimer les balises de code HTML ou Javascript des messages des utilisateurs.

Affichage depuis une base de données (ou saisie utilisateur)

Trois fonctions s’offrent à nous pour éviter les attaques XSS. Avant de les utiliser, vous devrez vous demander si vous souhaitez que les utilisateurs puissent stocker du code source dans votre base, ou si vous considérez que rien de ce qui n’entre dans votre base n’a besoin d’être du code. Dans le cas d’un forum par exemple, un utilisateur peut légitimement poster un message avec du code sain (utilisez alors l’une des deux premières fonctions).

  • htmlspecialchars() : encode les caractères < > ‘  » & pour qu’ils soient affichés mais pas exécutés
  • htmlentities() : la même chose que htmlspecialchars(), à la différence qu’elle encode beaucoup plus de caractères ; par exemple, le symbole €, les lettres accentuées é à ù…
  • strip_tags() : supprime carrément toutes les balises contenant < et > qui ne seront pas affichées

Enfin, si vous souhaitez récupérer des données qui ont été insérées en étant protégées par htmlspecialchars(), htmlentities() ou addslashes(), il vous faudra utiliser respectivement htmlspecialchars_decode(), html_entity_decode() et stripslashes().

Exemple concret

Pour finir, voilà un exemple d’un formulaire, avec dessous, la partie « sécurisation » (remarque : ce code sera prochainement obsolète car PHP pousse à l’utilisation de la « PDO » ; voir mon commentaire plus bas pour un exemple d’utilisation) :

<form id="mon_formulaire" method="POST" action="formulaire.php">
	<input name=premier_champ type=text placeholder="Premier champ" required>
	<input name=second_champ type=number placeholder="Second champ" required>
<button type=submit name=envoi>Envoi</button>

<?php
if (isset($_POST['envoi']))
{
	// Connexion à la base de données
	mysql_connect($dbhost, $dbuser, $dbpass);
	mysql_select_db($dbname);
	
	// Sécurisation des données reçues
	$premier_champ = mysql_real_escape_string($premier_champ);
	$second_champ = mysql_real_escape_string($second_champ);
	
	// Création et envoi de la requête
	$sql = 'INSERT INTO ma_table VALUES("'.$premier_champ.'","'.$second_champ.'")'; 
	mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());  
	
	//Clotûre de la connexion à la base de données.
	mysql_close (); 

	// Affichage des résultats à l'utilisateur
	echo 'Vous avez inséré '.htmlspecialchars($premier_champ).'.';
}
?>
</form>

Voilà donc quelques méthodes simples pour éviter que votre formulaire soit une passoire 🙂 n’hésitez pas à m’indiquer dans les commentaires si vous avez d’autres astuces pour la sécurisation simple des insertions et lectures de base de données.

XKCD - Exploits of a mom

Pour aller plus loin
StackOverflow – How to prevent code injection attacks in PHP (EN)
Webmaster Hub – Sécurité et formulaires PHP
Apprendre PHP – Traitement des formulaires
Chez Neg – Sécurité d’un formulaire PHP
Bastien Rossi – Les injections SQL
Le blog de maniT4c – Protection de formulaire contre les robots

Lire la suite

Récupérer les données d’un disque-dur non reconnu

Ce matin, j’ai branché un de mes disque-durs externe USB à mon PC, mais problème : le disque-dur n’est pas reconnu. Lorsque je le branche, il n’apparaît pas dans le Poste de Travail, il n’est pas reconnu dans le gestionnaire des disques, aucune fenêtre ne s’affiche, bref : mes données ne sont plus accessibles.

Fort heureusement, cela ne veut pas dire que les données qui se trouvent dessus sont foutues ; il peut simplement s’agir d’un problème de tables de partitions ou secteur de boot. Il s’agit d’un petit espace de données sur chaque disque qui indique à Windows comment est organisé le disque (quelles partitions se trouvent dessus, à quel endroit…). Si ce secteur est endommagé, Windows ne peut plus lire le disque. Mais les données, elles, peuvent être encore présentes.

Grâce à un petit utilitaire appelé TestDisk, nous allons tenter de récupérer les données d’un disque-dur qui n’est plus reconnu par Windows.

Avant toute chose

Commencez par mettre à jour les pilotes de votre ordinateur. En effet, avoir des pilotes à jour facilite la communication de Windows avec tous les composants de votre PC. Utilisez le site TousLesDrivers, très facile d’utilisation.

Assurez-vous d’avoir un autre disque branché à votre PC (autre que celui sur lequel vous voulez récupérer des fichiers). Une règle de base est qu’il faut toujours récupérer des fichiers ailleurs que sur le disque-dur endommagé.

Récupération de fichiers

Téléchargez l’utilitaire TestDisk et extrayez les fichiers de l’archive (pas besoin d’installation). Lancez l’exécutable testdisk_win.exe pour démarrer le logiciel. Comme vous le verrez, il s’agit d’une fenêtre de commandes DOS :

TestDisk - Fenêtre Principale
TestDisk – Fenêtre Principale

Sélectionnez Create à l’aides des flèches ↑ et ↓ puis appuyez sur Entrée. Ceci lancera une petite analyse de tous les disques connectés à votre PC. Sélectionnez le disque qui pose problème avec les flèches ↑ et ↓ puis Proceed avec les flèches ← et → et appuyez sur Entrée.

TestDisk - Sélection du disque
TestDisk – Sélection du disque

La fenêtre suivante vous demande de choisir le type de partition. À priori, il vous faut laisser Intel (le choix par défaut) puis appuyer sur Entrée. Pour d’autres usages, merci de voir les tutos plus détaillés en bas de cet article.

TestDisk - Sélection du type de partition
TestDisk – Sélection du type de partition

Nous arrivons maintenant sur le menu principal. Différents choix s’offrent à vous, nous allons commencer par le premier : Analyse.

TestDisk - Menu principal
TestDisk – Menu principal

Sur l’écran suivant, appuyez directement sur Entrée pour lancer une Quick Search. Au passage, vous noterez sur ma capture la ligne No partition is bootable, signe qu’il y a bien un problème.

TestDisk - Écran 'Analyse'
TestDisk – Écran ‘Analyse’

Vous verrez alors une ligne sélectionnée en vert, correspondant à votre disque. De nombreuses informations techniques s’y trouvent, que nous n’allons pas utiliser. Vous pourrez quand même remarquer les lettres NTFS sur la gauche (type de formatage propre à Windows) ainsi que le nom de votre disque (si vous lui en avez donné un) sur la droite ; pour moi, c’est « David Gilmour ».

TestDisk - Écran 'Recherche rapide'
TestDisk – Écran ‘Recherche rapide’

Appuyez sur la touche p de votre clavier, puis sur Entrée. Vous pourrez alors explorer le contenu de votre disque. Déplacez vous sur les dossiers avec les touches ↑ et ↓ et appuyez sur Entrée pour rentrer dans un dossier. Pour revenir au dossier parent (précédent), sélectionnez la deuxième ligne de chaque liste, qui correspond à .. puis appuyez sur Entrée.

TestDisk - Sélection d'un fichier/dossier à récupérer
TestDisk – Sélection d’un fichier/dossier à récupérer

Placez vous sur un fichier ou dossier que vous souhaitez absolument récupérer, puis appuyez sur la touche c. Vous devrez maintenant indiquer où vous souhaitez enregistrer le fichier/dossier récupérer. Utilisez le même principe pour vous déplacer (les flèches, touche Entrée, ligne .. pour revenir au dossier précédent). Une fois que vous avez choisi le bon emplacement, sélectionnez la première ligne de la liste, correspondant à . puis appuyez sur c.

TestDisk - Sélection de l'emplacement de récupération
TestDisk – Sélection de l’emplacement de récupération

Vous verrez alors alors s’afficher en rouge la ligne Copying, please wait…. Patientez le temps que la copie soit terminée : vous aurez alors marqué en vert Copy done!. Verifiez que le fichier est bien lisible, puis procédez pour tous vos fichiers les plus importants. Vous pouvez de la même manière choisir de restaurer un dossier tout entier.

TestDisk - Copie effectuée
TestDisk – Copie effectuée

Remarque : une fois que vous aurez sélectionné un emplacement de récupération pour la première fois, TestDisk restaurera tous vos fichiers suivants en respectant l’architecture de votre disque. Par exemple, si vous choisissez de récupérer D:\dossier1\fichier1.ext (D: étant votre disque malade) dans E:\recup (E: étant votre disque sain), TestDisk vous restaurera votre fichier dans E:\recup\dossier1\fichier1.ext.

TestDisk possède beaucoup plus de fonctions. Si jamais vous n’avez pas pu retrouver la partition contenant vos fichiers, cela ne veut toujours pas dire que vos données sont perdues 🙂 cherchez une solution dans la section Liens en bas de l’article.

À l’avenir…

C’est toujours effrayant de perdre des données, mais l’important est d’en tirer une leçon : ne laissez jamais qu’une seule copie de vos fichiers importants à un seul endroit ! Il faut toujours avoir deux ou trois copies de vos fichiers les plus importants, comme vos photos par exemple. Voici une liste de moyens de sauvegarde. Choisissez-en deux ou trois.

Les services de stockage en ligne sont une excellente solution. Le matériel sur lequel sera stocké vos données sera analysé en permanence afin de détecter toute faille. La redondance de vos données sera assurée ; dès qu’une baisse de fiabilité d’un des disques sera détectée, vos données seront basculées sur un nouveau disque.

Il faut néanmoins prendre garde à choisir un prestataire de qualité, comme une société ancienne ayant de l’expérience dans le domaine (type OVH) et pas une société borderline avec la loi (type Megaupload) qui peut être vouée à disparaître à tout moment 😉

OVH est une bonne solution, car en plus d’être fiable, elle n’est pas américaine, et de ce fait, non soumise au Patriot Act (loi américaine qui permet au gouvernement d’accéder n’importe quand et sans mandat à vos données). Non, j’ai pas d’actions chez OVH ^^

Liens

La restauration de fichiers n’a pas fonctionné ? Vous avez un problème plus grave ? Cherchez une solution sur l’un des tutos suivants avant d’envoyer votre disque à une société, qui vous facturera l’opération plusieurs centaines d’euros !

Comment Ça Marche – Récupération de données perdues
PC Astuces – Utilisation de TestDisk en détails
CGsecurity – TestDisk Etape par Etape

Pour toutes questions relatives à l’utilisation de ce logiciel, je vous invite à parcourir le site officiel ou à expliquer votre problème sur le forum officiel, qui seront plus aptes que moi à résoudre vos problèmes.

Lire la suite