Comment protéger le code source d'une page HTML ?

Nos tutoriels complets pour vous aider
Répondre
Avatar du membre
pboulanger
Administrateur du site
Administrateur du site
Messages : 872
Enregistré le : mar. 17 mars 2020 11:49
Localisation : Oise- LA CHAPELLE EN SERVAL
A remercié : 256 fois
A été remercié : 138 fois
Contact :
    unknown unknown

Comment protéger le code source d'une page HTML ?

Message par pboulanger »

Sécurité : comment protéger le code source d'une page HTML ?

Je vous propose de découvrir très succinctement une des facettes de la technique de protection des codes sources.

Le monde du Web n'est pas le monde des bisounours. Il est fréquent que certaines personnes malintentionnées veuillent récupérer tout ou partie du code source de votre application Web.

Pour éviter cela, il existe une technique connue sous le nom d'obfuscation qui consiste à rendre inintelligible aussi bien pour un être humain qu'un des compilateurs le code source de votre page tout en préservant le parfait fonctionnement lors de la compilation ou de l'interprétation.

Les principaux avantages de cette technique sont :
  • protection du code
  • performance
  • camouflage
  • peu onéreuse
  • transparente intégralement pour les développeurs et utilisateurs
Cette technologie apporte un véritable avantage si vous voulez assurer la qualité et la confidentialité de vos applications. C'est une bonne méthode pour éviter la rétro ingénierie.

Qu'appelle-t-on rétro ingénierie ?

Plus connu sous le nom anglais Reverse Engineering, cette technique consiste à déterminer le fonctionnement interne d'une application à partir de sa compilation. Cela revient à dire que l'on cherche à reconstituer le code source à partir d'un exécutable.

Voici un exemple d'un code simple et son obfuscation (les premières lignes de la balise HEAD de la page d'accueil du forum du team ;) ) :

le code en clair :

Code : Tout sélectionner

<!DOCTYPE html>
<html dir="ltr" lang="fr">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/png" href="favicon.png" />
<title>Team  AAZ - Forum - Page d’index</title>
</head>
</html>
le code protégé :

Code : Tout sélectionner

<script language="javascript">
<!--
document.write(unescape('%3C%21%44%4F%43%54%59%50%45%20%68%74%6D%6C%3E%0A%3C%68%74%6D%6C%20%64%69%72%3D%22%6C%74%72%22%20%6C%61%6E%67%3D%22%66%72%22%3E%0A%3C%68%65%61%64%3E%0A%3C%6D%65%74%61%20%63%68%61%72%73%65%74%3D%22%75%74%66%2D%38%22%20%2F%3E%0A%3C%6D%65%74%61%20%68%74%74%70%2D%65%71%75%69%76%3D%22%58%2D%55%41%2D%43%6F%6D%70%61%74%69%62%6C%65%22%20%63%6F%6E%74%65%6E%74%3D%22%49%45%3D%65%64%67%65%22%3E%0A%3C%6D%65%74%61%20%6E%61%6D%65%3D%22%76%69%65%77%70%6F%72%74%22%20%63%6F%6E%74%65%6E%74%3D%22%77%69%64%74%68%3D%64%65%76%69%63%65%2D%77%69%64%74%68%2C%20%69%6E%69%74%69%61%6C%2D%73%63%61%6C%65%3D%31%22%20%2F%3E%0A%3C%6C%69%6E%6B%20%72%65%6C%3D%22%69%63%6F%6E%22%20%74%79%70%65%3D%22%69%6D%61%67%65%2F%70%6E%67%22%20%68%72%65%66%3D%22%66%61%76%69%63%6F%6E%2E%70%6E%67%22%20%2F%3E%0A%0A%3C%74%69%74%6C%65%3E%54%65%61%6D%20%20%41%41%5A%20%2D%20%46%6F%72%75%6D%20%2D%20%50%61%67%65%20%64%19%69%6E%64%65%78%3C%2F%74%69%74%6C%65%3E%0A%0A%3C%2F%68%65%61%64%3E%0A%3C%2F%68%74%6D%6C%3E'));
//-->
</script>
Comme pouvez le constater à la lecture, les deux codes ont plus rien à voir l'un avec l'autre et pourtant ils fonctionnent exactement de la même manière.

Quelques notions d'obfuscation :

je ne vais vous citer que les principales notions (4) les plus utilisées. Cette liste n'est pas exhaustive loin s'en faut.
Il s'agit, entre autres, de :
  • Attribution De Nouveaux Noms d'identifieurs
  • Réduction du code
  • Pruning
  • Suppression du style algorithmique
Attribution De Nouveaux Noms d'identifieurs

Au préalable, le but de l'obfuscation est de rendre le code source incompréhensible.

Les identifieurs d'un programme donné sont les variables, les méthodes, les attributs, les classes, les constantes.
Il existe trois méthodes permettant de renommer les identifieurs :
  • La méthode aléatoire fournit un identifiant aléatoire à chaque identifieurs.
  • L'Overlord induction fournit un maximum d'identifieurs à la même chaîne de caractères. Ce procédé tente de renommer autant d'identifieurs que possible avec exactement le même nom. Les principaux avantages de cette méthode sont la réduction de la taille du code, le gain d'espace sur les entrées des piles et des chaînes.
  • La méthode d'invisibilité fournit des caractères spéciaux interdits par le langage à chaque identifieur.
Réduction du code

Celle-ci est "automatique" grâce à la suppression de toutes les indentations, tous les commentaires. Cette dernière suppression s’inscrit également dans l'objectif de fournir le moins de renseignements possibles à l'attaquant.

Pruning (purge des déclarations d'API non utilisées)

Un projet de développement utilise obligatoirement des API qui lui permettent de faire appel à des classes, méthodes etc. En effet, l'élagage des déclarations consiste à minimiser au maximum l'appel des bibliothèques non utilisées, afin de fournir un minimum d'indices sur l'algorithme employé.

Suppression du style algorithmique

Le style algorithmique d'une application permet de définir une lisibilité du code intuitive afin, de pouvoir d'une manière logique, déduire son fonctionnement. Le code de base suivant les conventions de codage sera alors minimisé afin d'apporter la lisibilité la plus maigre possible.

Comment obfusquer mon code ?

Pour cela en trouve des sites permettant de faire cette opération en ligne comme :
  • snapbuilder .com (c'est celui que j'utilise ;) )
Une recherche via Google vous donnera d'autres sites

Pour celui-ci, la manip est simple :
  • Afficher la page Web que vous voulez protéger
  • Affichez le code source de celle-ci
  • Sélectionnez la totalité du code de la page (ctrl + A)
  • Copier la sélection dans le presse papier (ctrl+c)
  • Ouvrez snapbuilder
  • Collez le code source de votre page (ctrl+v)
    Ashampoo_Snap_2020.05.10_13h38m51s_002_.png
  • Exécuter l'obfuscation et copier le résultat dans le presse papier
    Ashampoo_Snap_2020.05.10_13h38m51s_002_.png
  • Ouvrez le fichier de votre page html et remplacez tout le contenu par le script
  • C'est fait le code de votre page html est maintenant protégé et cerise sur le gâteau elle s'affiche plus vite ...

Il existe également des logiciels pour cette opération comme :
  • Skater .net
En fait, l'offre est beaucoup plus importante car on peut obfusquer ce que l'on veut (PHP, .NET, HTML, VBA, EXCEL, ...)

Voila, un petit survol d'une technique intéressante pour protéger nos scripts, programmes et autres développements personnels.

Si cela vous intéresse, j'ai, basée sur le tuto .htaccess Utiliser le .htaccess pour &quot;ouvrir&quot; un répertoire en dowload,
une application qui est protégée par cette méthode.

J'ai fait une capture d’écran pour l'URL et je vous l'enverrai en MP car je n'ai pas le droit de mettre des liens externes au site.

En espérant que cela vous aura donné envie de regarder cela de plus près.

Sources : supinfo, Google, Wikipédia ...
Fichiers joints
Ashampoo_Snap_2020.05.10_13h39m06s_003_.png
Modifié en dernier par pboulanger le lun. 11 mai 2020 18:41, modifié 6 fois.
Amicalement,

Pierre
Avatar du membre
chtimi054
Administrateur du site
Administrateur du site
Messages : 8921
Enregistré le : ven. 26 juil. 2013 06:56
A remercié : 295 fois
A été remercié : 445 fois
    unknown unknown

Re: Comment protéger le code source d'une page HTML ?

Message par chtimi054 »

Comme le dit si bien Marcel !

Magnifique !

Merci Pierre
Avatar du membre
Prof
Administrateur du site
Administrateur du site
Messages : 8320
Enregistré le : lun. 5 avr. 2010 20:07
Localisation : Vosges
A remercié : 1 fois
A été remercié : 22 fois
Contact :
    unknown unknown

Re: Comment protéger le code source d'une page HTML ?

Message par Prof »

Merci pour ce partage très intéressant...
Règlement du forum
Toute demande d'aide ou de liens par MP est inutile !
Avatar du membre
loic33
Membre VIP
Membre VIP
Messages : 211
Enregistré le : ven. 20 mars 2020 11:45
A remercié : 37 fois
A été remercié : 76 fois
    unknown unknown

Re: Comment protéger le code source d'une page HTML ?

Message par loic33 »

Merci Pierre et haut les cœurs!!!
La liberté des uns s’arrête ou commence celle des autres
Répondre