Certains développeurs/webmasters sont souvent confrontés à ce problème de compression/optimisation des images tout en gardant leur qualité afin de rendre toujours plus fluide la navigation sur son site web.
Dans cet article je vais vous proposer de :
Trouver les images non-optimisées sur ses pages avec Page Speed et YSlow.
Un bout de code bien pratique qui vous permettra de parcourir un répertoire et ses sous-répertoires pour effectuer des actions sur tous les fichiers présents.
La plupart des développeurs utilisent l'algorithme du MD5 ou SHA1 pour crypter les mots de passe en base de données. Une fois celui-ci stocké en bdd, on compare le mot de passe crypté avec le hash MD5 enregistré en base de données pour autoriser une authentification par exemple. Ainsi l'administrateur du site ou un pirate ne peut connaître les mots de passes inscrits.
Avec ce genre de cryptage, il y a peu de chance pour un hacker de récupérer les mots de passe utilisateurs car celui-ci n'est pas réversible. Cependant l'attaque par dictionnaire est toujours possible. En utilisant par exemple cet outil de reverse MD5 hash vous pourrez retrouver un mot de passe si celui-ci est inscrit dans un des dictionnaires utilisés. En rentrant par exemple le hash ab4f63f9ac65152575886860dde480a1, cet outil vous retournera azerty.
Pour éviter que votre mot de passe ou celui de vos clients ne soit percé à jour, on va utiliser une petite fonction en PHP permettant de renforcer le hash MD5 généré afin que celui-ci ne soit pas décryptable par les dictionnaires. On ajoutera pour cela une chaîne statique devant le mot de passe avant de générer le hash MD5.
function improve_md5($string)
{
// Exemple de chaîne statique qui sera concaténée avec la chaîne originale.
$static_string = 'DSB4zT9';
// On renvoi le hash MD5 de la chaîne statique concaténée à la chaîne originale.
return md5($static_string . $string);
}
Vous devrez utiliser cette fonction pour l'enregistrement en base de donnée et la comparaison lors de la connexion. Attention toutefois de ne pas modifier votre chaîne statique lorsque vous avez fait votre premier enregistrement en base de donnée!
Je reçois beaucoup de mails concernant mon nouveau site et certains sont intrigués par mon système de minifying du Javascript et du CSS. Je vais faire un bref point descriptif sur son fonctionnement même si je vous fournirai les sources bientôt c'est promis
Alors tout d'abord j'ai une classe qui liste les différents scripts que j'utilise. Rien n'est directement mis dans l'entête du layout (corps de la page). Cette classe sera appelée afin de générer le header avec la balise script pour le Javacript et link pour le CSS.
Par exemple sur mon site cela donne :
%MINIFYHTMLb31888d92b08959ff39ee8f49116c5248%
Comme vous pouvez le voir l'attribut src est assez spécial ainsi que son contenu.
Le paramètre g concerne le type (pour cet exemple js comme javascript) et h concerne l'host pour la sélection des scripts (tous ne sont pas chargés suivant la page et le domaine).
Le script appelé est une classe PHP qui va générer l'entête d'un fichier javascript ou css qui peut être encodé en Gzip suivant si on choisit ou non de compresser les scripts. Voici l'entête HTTP du script en exemple :
Le Content-Length ne pèse que 200Ko car celui-ci est compressé. Normalement il pèserait plus de 2Mo! Le système de compression est donc relativement intéressant pour réduire les temps de chargement du site.
Un autre point intéressant dans ma classe concerne l'obfuscation du code javascript. Je ne ais pas m'étaler sur ce point, vous aurez juste à jeter un œil au code source si vous êtes curieux pour tout comprendre
Autre point essentiel concerne la gestion du cache du côté du serveur Apache. Voici ma configuration de gestion du cache :