Sign in to follow this  
Wiizko

 tutoriel / partage [Sécurité] Protection, cryptage, securité de vos sites

Recommended Posts

Bonjour,

 

Voici quelques conseils/astuces pour vous protéger de ces méchants pirates.

 

Bien sûr après avoir suivi ce tutoriel ne pensez pas que vous êtes à l’abri de toute attaque...

Ce ne sont juste que quelques astuces et règles de base à connaître...

 

Sommaire :

 

- Les mot de passe

- Crypter ses fichiers sensibles

- Le nommage des fichiers

- Les droits

- Les injections Mysql

- Crypter son e-mail

 

Les mots de passe

 

Comment bien protéger vos mots de passe ?

 

On peut essayer de pénétrer votre hébergement en devinant votre mot de passe FTP.

 

Respectez les règles suivantes :

 

1 - Un mot de passe doit avoir au minimum 8 caractères, plus c'est mieux.

 

2 - Il ne doit pas être un mot que l'on trouve dans un dictionnaire.

Les logiciels pour cracker des mots de passe ont des dictionnaires de centaines de milliers de mots de toutes les langues et cherchent toutes les combinaisons.

Cela prend entre quelques minutes à quelques petites heures pour cracker ces mots de passe très facilement.

 

3 - Un bon mot de passe contient des lettres, des chiffres, des caractères spéciaux, des majuscules et des minuscules.

 

4 - N'UTILISEZ JAMAIS LE MÊME MOT DE PASSE pour le FTP, base SQL, e-mail, interface d'administration du site web, serveur.

Le pirate sait que s'il trouve votre mot de passe, il a de fortes chances que ce soit le même mot de passe ailleurs !!!

 

Il existe des sites web qui proposent de vous générer des mot de passe aléatoire :

http://tools.arantius.com/password]http://tools.arantius.com/password

http://www.freepasswordgenerator.com/

http://www.pctools.com/guides/password/

 

Mais n'ayant pas une totale confiance en ces site, le mieux est de créer vous même votre mot de passe

 

Par exemple :

Partons du mot : " emulation"
On le découpe en 3 parties : "emu" "la" "tion"
On y ajoute le nombre de lettres par partie découpé: "emu3" "la2" "tion3"
On y ajoute des majuscules : "Emu3" "La2" "Tion3"
Et enfin on sépare chaque partie découpé par des caractères spéciaux : "Emu3~" "La2;" "Tion3:"
Ce qui vous donne au final : "Emu3~La2;Tion3:"
 

Bien sûr, ce n'est qu'une méthode parmi tant d'autres, à vous de créer la vôtre.

Mais au moins vous avez un mot de passe facile à retenir et plutôt bien sécurisé...

 

Dernière vérification, pour être sûr que votre mot de passe n'existe dans aucune langue, tapez-le en partie ou en entier dans Google.

S'il ne retourne aucun résultat, alors votre mot de passe n'est pas un mot du dictionnaire.

 

Crypter son fichier config.inc.php

 

Si un pirate a pénétré votre site et cherche maintenant à connaître les login et mot de passe de votre base MySQL pour la pirater.

On peut lui compliquer la tâche en cryptant ces données sensibles.

Le serveur web pourra lire ces informations facilement, mais elles ne seront pas lisibles directement par un œil humain.

 

Pour un expert en PHP, cette protection ne dure que 2 minutes, mais autant lui donner du travail en plus !

 

Visitez ce site web et cryptez vos données.

- http://www.btt-scripts.com/demo/encrypt/

 

Par exemple :

<?php
//** MySQL settings **//
$db_server   = "mysql5-1";
$db_name     = "nombasesql";
$db_username = "loginsql";
$db_password = "motdepasse";
?>
 

Deviendra une fois crypté :

<?php
eval(gzuncompress(gzinflate(base64_decode('AXEAjv942tPX19JS8K0MDvRRKE4tKcnMSy9W0NLS1+flUklJii9OLSpLLVJQULBVUMqtLC7MMdU1VLKGyOUl5qYqKEDk8vJzkxKLU4EKYLKlQK1gFUDZnPz0zDwkuYLE4uLy/KIUsKn5JSmpIIFUkCwAmYgq2g==')))); 
?>
 
Nommage de fichiers
 

Pour éviter que les robots des pirates ne vous trouvent grâce à Google, changez certaines habitudes et notamment le nom et l'URL de certains fichiers.

 

1- N'appelez pas la page de votre formulaire de contact: contact.php ou contact.html.

Appelez là autrement comme "courrier", "missive", etc. Les robots spammeurs auront plus de mal à trouver un formulaire de contact à pirater pour envoyer des spams grâce à une faille de votre script d'envoi de mail.

Faites la même chose avec d'autres fichiers: pas de login.php, download.php (on va chercher la faille pour télécharger un fichier hors de son répertoire), etc.

En règle général, évitez ces mots anglais trop répandus.

 

2- Les spammeurs ne sont pas idiots. Changez aussi certains noms du formulaire.

Dans les balises html INPUT, changez l'attribut NAME qui contient des mots comme "e-mail" "mail", "name" ou "subject" par leur équivalent en français (courriel, nom, sujet).

Faites ce changement dans le formulaire HTML et dans votre script php.

 

Les droits d'écriture, de lecture et d'exécution.

 

On a l'habitude de dire qu'on doit attribuer par FTP les droits 644 à un fichier et 755 à un dossier.

 

Pour aller plus loin. Protégeons les parties sensibles de votre site comme le fichier config.php et .htaccess en lui donnant les droits 404. Personne ne pourra le modifier, même pas vous !

(c'est faux dans l'absolu si votre site a un gros trou de sécurité, mais imparable contre une attaque automatique).

 

Voilà comment je protège mon site :

- Tous les fichiers ont les droits 404

- Tous les dossiers ont les droits 505.

- Si un fichier ou un dossier nécessitent des droits d'écriture par le serveur mettez 604 pour le fichier et 705 pour le dossier. Chez OVH ça marche.

- Les fichiers config et htaccess ont des droits 404

- Le dossier "www" doit être en chmod 705, ne le changez jamais.

- Inutile de faire le fameux 777 (tous les droits à tout le monde).

 

Avantage :  personne ne peut modifier vos fichiers.

Inconvénient :  il faut changer les droits en écriture (604 et 705) si vous faites une mise à jour de site et remettre les bons droits 404 et 505 après. Cela prend 10 min., mais ça vaut la peine.

 

Pourquoi est-ce si important:

Le pirate essaye d'installer un fichier sur votre site afin d'en prendre le contrôle (pour effacer le site, y placer un script qui envoie du spam, etc.).

Il cherche des trous de sécurité pour pouvoir uploader son fichier de prise de contrôle.

Si votre site a un trou de sécurité, le pirate l'exploitera, mais comme votre site web n'a que des dossiers et fichiers interdits en écriture, il ne pourra rien uploader.

Son attaque ne marchera pas.

 

Empêcher les injections mysql

 

Il faut toujours vérifier la chaîne avant de l'insérer dans votre base de données sinon cela pourrait permettre à un pirate de faire pas mal de choses.

 

Exemple pour sécuriser la variable postée par le visiteur :

"$_POST['chaine]"
 

Va devenir :

$chaine = mysql_real_escape_string(htmlspecialchars($_POST['chaine]));
 

Cryptez votre adresse e-mail

 

Si vous n'avez pas d'autre choix que d'afficher une adresse e-mail sur votre site web, vous avez 2 solutions:

 

1- Créez un fichier image (gif, png, jpeg) avec votre adresse écrite dessus. Ce n'est pas du texte, les robots spammeurs ne le verront pas.

 

2- Cryptez votre adresse e-mail avec du javascript.

Allez sur ce site web:

http://www.aspirine.org/emailcode.php pour faire crypter votre adresse.

Pour aller encore plus loin, au lieu d'intégrer ce code à votre page html, on va l'appeler depuis un fichier javascript.

 

L'avantage est que si l'adresse est présente sur plusieurs pages, vous n'avez à faire la modification qu'une fois.

 

1- Créez un dossier qu'on appelle "java" et on va y mettre un fichier qu'on va appeler "adresse.js".

 

2- Copiez dans ce fichier la ligne de code javascript de votre adresse e-mail cryptée qui commence par "var ...".

 

Par exemple :

var g6="";for(var z1=0;z1<335;z1++)g6+=String.fromCharCode(("{fw%}

 
[color=#FFA500][i][b]Ensuite, dans votre page html, copiez le code suivant:[/b][/i][/color]
 
[php]
 
  • Like 4

Share this post


Link to post
Share on other sites

Merci du partage, petite faute tout de même :

 

2- Les spammeurs ne sont pas idiots. Changez aussi aussi certains noms du formulaire.

 

Share this post


Link to post
Share on other sites

Tout d'abord, merci pour ce tutoriel fort intéressant !

 

Cependant, une petite chose me turlupine :

 

$chaine = mysql_real_escape_string(htmlspecialchars($_POST['chaine]));

 

Ceci me semble totalement inutile. La fonction htmlspecialchars() n'est utile que pour l'affichage (protection contre les failles XSS) et n'a rien a faire ici ! En effet, la fonction mysql_real_escape_string() est là pour parer les éventualités d'injections SQL. Utiliser ces deux fonctions me semble inapproprié.

Après c'est possible je sois dans l'erreur évidemment...

Share this post


Link to post
Share on other sites

Bonjour,

 

Pour les explications je ne serais être plus précis que le "manuel php" lui meme ...

 

donc voici un extrait :

 

Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour être affichés. htmlspecialchars() remplace tous ces caractères par leur équivalent dans la chaîne string . Cette conversion est très pratique pour la programmation web. Si vous devez remplacer tous les caractères, utilisez plutôt htmlentities() à la place.

 

htmlspecialchars() est pratique pour éviter que des données fournies par les utilisateurs contiennent des balises HTML, comme pour un forum ou un chat. Cette fonction prend un deuxième argument optionnel, qui indique comment doivent être traités les guillemets doubles et simples. Vous pouvez utiliser l'une des constantes suivantes : ENT_COMPAT, la constante par défaut, va convertir les guillemets doubles et ignorer les guillemets simples; ENT_QUOTES va convertir les guillemets doubles et les guillemets simples; ENT_NOQUOTES va ignorer les guillemets doubles et les guillemets simples.

 

Les remplacements effectués sont :

 

"&" (et commercial) devient "&"

""" (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.

"'" (single quote) devient "'" uniquement lorsque ENT_QUOTES est utilisée.

"<" (inférieur à) devient "<"

">" (supérieur à) devient ">"

 

Pour plus d'info je vous invite a visiter ce site :

 

http://php.net/manual/fr/function.htmlspecialchars.php

Share this post


Link to post
Share on other sites
Guest Ioio

Bonjour,

.

.

.

empêcher les injections mysql

 

 

Il faut toujours vérifier la chaîne avant de l'insérer dans votre base de donnée sinon cela pourrait permettre à un pirate de faire pas mal de choses.

 

Exemple pour sécuriser la variable postée par le visiteur:

 

"$_POST['chaine]"

 

 

Va devenir :

 

$chaine = mysql_real_escape_string(htmlspecialchars($_POST['chaine]));

 

 

 

Cryptez votre adresse e-mail

 

 

Si vous n'avez pas d'autre choix que d'afficher une adresse e-mail sur votre site web, vous avez 2 solutions:

 

1- Créez un fichier image (gif, png, jpeg) avec votre adresse écrite dessus. Ce n'est pas du texte, les robots spammeurs ne le verront pas.

 

.

.

.

Source : Google

 

Je suis pas sûr que tes codes php fonctionnent xD

Il manque une apostrophe à $_POST['chaine]...

En effet: $_POST['chaine']

Share this post


Link to post
Share on other sites
Sign in to follow this