Communication

Petit tuto pour protéger vos données des téléchargements non autorisés

Il y a quelques mois, durant l’une de nos études de cas, les failles de sécurité sur lesquelles nous sommes tombés en parcourant le site de Kusoma Group* nous ont effarés. Afin de parer à ce genre de négligence, nous avons demandé à l’un de nos lecteurs, Fotso Fonkam, de rédiger un article destiné aux débutants en programmation, afin d’assurer un minimum de protection aux fichiers que leurs plateformes hébergent.

*La faille de sécurité restante sur le site de l’entreprise a depuis été corrigée : la dernière fois que nous avons regardé (merci à nos yeux wink), le site utilisait Shopify, une solution e-commerce professionnelle, solide en matière de sécurité.

Fotso Fonkam est un professeur d’anglais d’origine camerounaise et un développeur web autodidacte. Il est également blogueur sur Le Petit Écolier, un blog dédié aux problématiques qui touchent le système éducatif, la politique et la société camerounaise. Il est à l’origine d’Edublog, un blog qui a pour but de partager le quotidien des acteurs du domaine de l’éducation au Cameroun, de Schoolmap Cameroon, une « Carte scolaire du Cameroun » qui fournit des informations sur les établissements publics d’enseignement secondaire, ainsi que du Présimètre, une plateforme qui assure le suivi et l’évaluation des promesses électorales faite par le président Biya afin d’en évaluer la réalisation et l’impact de façon factuelle. Nous sommes pour notre part intimement convaincus que cette dernière initiative lui vaudra une visite à « Sans famille ». 

Passons au vif du sujet à présent, voulez-vous ? 

 

Quand on décide de mettre du contenu à la disposition d’internautes ou de clients, il est impératif de prendre un certain nombre de précautions pour sécuriser ce contenu. Cela afin d’empêcher les téléchargements non autorisés. Cette mise en garde est d’autant plus valable que le contenu en question constitue une source de revenus, l’une des conséquences directes du téléchargement illégal étant la mise en danger voire la destruction du business, il est impératif de protéger sa base de données.

Nous allons dans cet article revenir sur une ou deux astuces qui permettront à des développeurs pas très expérimentés – surtout à eux, en fait – de protéger les documents qu’ils mettent sur internet. Mais avant d’y arriver, nous allons lister quelques-unes des erreurs qui peuvent constituer des failles de sécurité sur un site qui propose du contenu à télécharger.

computer-1591018_1920

I. Exemples de failles de sécurité sur des sites de téléchargement

Ce qu’il faut savoir de prime abord, c’est que tout contenu mis sur internet peut être accessible via une URL. C’est dire que, si le contenu mis en ligne n’est pas protégé, il suffira que le lien d’accès à ce contenu soit partagé pour que des personnes non autorisées y accèdent sans problème. Il est donc impératif de protéger et/ou de cacher les liens vers les documents mis en ligne. Dans la pratique, ça signifie que l’internaute (client, visiteur) qui accède à un document à l’adresse http://monsitedeventeenligne.com/documents/document-en-vente-1.pdf n’aura qu’à passer la même adresse à d’autres personnes pour leur permettre d’accéder au document à leur tour, et ce sans même s’inscrire sur le site ni effectuer un payement.

Pire encore, en analysant cette même URL, il est possible d’accéder à la totalité des documents disponibles si ceux-ci sont logés dans un même dossier (ce qui est généralement le cas).

Petit exemple : vous effectuez un achat sur une plateforme, et recevez par mail une URL pour le téléchargement sous la forme http://monsitedeventeenligne.com/documents/document-en-vente-1.pdf. Dans la plupart des cas, en suivant le lien http://monsitedeventeenligne.com/documents/ il y a de fortes chances pour que vous tombiez sur une page contenant la liste complète des documents à télécharger. Ce sont des failles de sécurité qui relèvent en réalité de la négligence du développeur.

Précisons dès maintenant qu’il ne s’agit pas pour nous de traiter de cas de hacking ou de failles de sécurité exploitables par des développeurs expérimentés, mais simplement de donner des astuces ou des pistes à explorer et à approfondir pour empêcher que des personnes, même sans aucune connaissance en programmation ou en développement web, puissent aisément avoir accès à un contenu qui n’est accessible que sous certaines conditions (inscription, achat, etc).

Cette précision faite, nous allons sans plus tarder entrer dans le vif du sujet. Nous allons précisément voir comment protéger les dossiers, comment protéger le lien de téléchargement et comment éviter les aspirateurs de sites qui sont également un moyen utilisé pour récupérer le contenu à télécharger.

password-2781614_1920

II. Protéger les dossiers sensibles

Comme nous l’avons dit plus haut, il est possible d’accéder à la totalité d’un dossier s’il n’est pas protégé. En général, l’accès aux fichiers sur internet fonctionne comme sur un ordinateur : c’est hiérarchisé, et l’URL contient en général suffisamment d’informations pour permettre d’analyser la structure du lien. Mais heureusement, il existe des façons de protéger les dossiers sensibles (ou non), des regards indiscrets. Nous allons en citer deux.

1/ Le fichier « index »

Sur un site internet, la première page, c’est-à-dire celle qui s’affiche par défaut quand on accède au site, c’est la page index. Elle peut avoir différentes extensions en fonction du langage utilisé pour l’écrire. Si la page est écrite en HTML, on aura index.html (ou index.htm). Si elle est écrite en PHP, ce sera index.php. En l’absence de ce fichier, le contenu du dossier s’affichera entièrement, permettant à quiconque y jette un coup d’œil de comprendre la structure de vos fichiers et d’y faire ce qu’il veut, vu que les différents fichiers s’affichent sous forme de liens, ils sont donc accessibles en un clic.

Puisqu’en général les fichiers d’un site sont eux-mêmes logés dans un dossier chez votre hébergeur, le principe de la page index s’applique à tous les dossiers du site. En d’autres termes, pour protéger les dossiers sur un site, il suffit de placer un fichier index.html ou index.php (ou n’importe quelle autre extension en fonction du langage de programmation utilisé) dans chaque dossier.

La question qui suit est certainement : « que mettre dans le fichier index ? ». Et la réponse est tout aussi simple : RIEN DU TOUT. Vous pouvez simplement placer votre fichier index.html, vide, à la racine du dossier à protéger et personne n’y aura plus accès. En fait, ceux qui suivront l’adresse http://monsitedeventeenligne.com/documents/ verront désormais s’afficher le contenu de la page index.html ou index.php. Si vous n’y avez rien écrit, rien ne s’affichera. Ce sera tout blanc.

L’autre option dans ce cas, c’est de rediriger le visiteur qui essaie d’accéder au contenu d’un dossier. Pour cela il faudra utiliser un langage de programmation – le HTML est donc disqualifié. Si vous développez en PHP comme nous, il suffira de mettre le code suivant dans le fichier index.php pour rediriger le visiteur hors du dossier sensible :

<?php

header(«location : ../»);

?>

Le code donné ci-dessus aura pour effet de renvoyer le visiteur sur la page parent à celle où il se trouve. Dans notre cas, il sera renvoyé sur http://monsitedeventeenligne.com. On peut exploiter cette option en décidant par exemple de la renvoyer sur la page d’achat, sur la page de connexion à son compte ou sur la liste des produits qu’on propose (un peu de publicité ne fera pas de mal au curieux).

Cette méthode est la plus facile car ne demandant pas des connaissances approfondies en développement. Il existe une autre méthode tout aussi efficace, mais qui requiert un peu plus d’expérience.

2/ Le fichier .htaccess

Le .htaccess est un fichier qui se dépose à la racine du site (dans le même dossier que le fichier index principal) ou dans les dossiers. On l’utilise pour un tas de choses, qui vont de la protection des dossiers à la réécriture des liens en passant par la protection des pages par un mot de passe. Il est écrit en APACHE, un autre langage de programmation extrêmement puissant. C’est un fichier à manipuler avec prudence, parce qu’une mauvaise manipulation peut rendre le site indisponible (le langage apache est extrêmement puissant).

Pour créer un fichier .htaccess, il est conseillé d’utiliser un éditeur de texte comme Notepad++. Une fois dans l’éditeur, il suffit de créer un nouveau fichier et de l’enregistrer avec le nom .htaccess (en fait le fichier n’a pas de nom, il n’a qu’une extension). Une fois le fichier créé et déposé à la racine du site ou du dossier à protéger, il suffit d’y inscrire le code suivant :

AuthType none

Require all denied

Ce code implémenté bloquera tout accès au dossier protégé, réglant ainsi une partie du problème, car la protection des dossiers ne règle qu’une partie du problème. Du moins, tant que le lien de téléchargement n’est pas lui-même sécurisé.

security-265130_1920

III. Sécuriser le lien de téléchargement

Nous l’avons dit en introduction, l’utilisateur n’a pas besoin d’entrer dans le dossier pour avoir le lien vers un document. Il suffit qu’une personne qui a un lien le lui passe. Ça signifie qu’il faut également protéger les liens qui donnent accès aux contenus à télécharger, notamment en évitant de donner l’URL de téléchargement de façon explicite. Nous proposons ci-dessous quelques façons de le faire.

1/ Forcer les téléchargements sur la plateforme

Comme nous l’avons déjà mentionné, tout document disponible sur internet est accessible via une URL. Et cette URL contient des informations permettant d’identifier le document à télécharger. Un des moyens utilisés par plusieurs plateformes pour éviter des téléchargements non autorisés, c’est d’obliger l’utilisateur à effectuer le téléchargement à partir de son compte. L’avantage de cette option, c’est qu’elle réduit les risques de partage de l’URL de téléchargement vu que dans la plupart des cas l’utilisateur n’a même pas accès à cette URL : il clique sur un bouton et le document est téléchargé.

Même dans le cas où le document est téléchargé en arrière-plan (soit par l’utilisation du JavaScript ou d’Ajax), il faut savoir que l’URL du document est toujours transmise, même si c’est de façon invisible. Et bien sûr, avec un minimum de connaissances, il est possible d’accéder à cette URL (nous n’allons pas dire comment ici).

Pour éviter que l’URL ne soit récupérée, l’utilisation de la méthode POST dans la transmission des données est recommandée si cette transmission se fait via un formulaire. L’envoi d’un formulaire se fait par deux méthodes, en général : la méthode GET et la méthode POST. La différence entre les deux, c’est que la méthode GET insère les données à transmettre dans l’URL.

Par exemple, si vous remplissez un formulaire dans lequel vous donnez votre nom et votre prénom, et que ce formulaire est transmis par la méthode GET à une page appelée reception.php, l’url que le formulaire va transmettre au moment de l’envoi sera reception.php ?nom=votre_nom&prenom=votre_prenom. En appliquant cela à un document à télécharger, vous conviendrez avec nous que tous les détails du document et de l’URL de téléchargement seront accessibles à quiconque peut récupérer l’URL envoyée par le formulaire – or, nous avons déjà dit que c’était facilement faisable.

La méthode POST quant à elle ne transmet aucune donnée via l’URL. Si nous appliquons le cas cité plus haut en utilisant la méthode POST, le malin qui récupérera l’URL transmise par le formulaire aura une seule information : l’URL (reception.php). Pas suffisant pour télécharger un document.

La limite de cette option, c’est qu’elle oblige le client à avoir un compte sur votre plateforme, et avouons qu’elle est plutôt contraignante. C’est la raison pour laquelle le lien de téléchargement est généralement envoyé par mail. Si c’est votre cas, il est toujours possible de protéger l’URL de téléchargement.

2/ Utiliser une URL intermédiaire

Si vous optez pour l’envoi de l’URL de téléchargement par mail à votre client/visiteur/abonné (peut-être pour récupérer son adresse par la même occasion), il est tout à fait possible de protéger votre document. Pour cela, il suffit d’envoyer par mail une URL qui ne donne pas directement accès au document. Par exemple, votre URL peut renvoyer à une page sur laquelle vous aurez mis du code qui permette de vérifier un certain nombre de choses avant de lancer le téléchargement proprement dit. Par exemple, vous pouvez récupérer l’adresse email du client pour vérifier :

  • qu’il a effectivement fait un achat (si le document est vendu),
  • qu’il n’a pas encore téléchargé le document (si le nombre de téléchargements est limité)
  • etc.

Ce n’est qu’après ces différentes vérifications que le téléchargement sera lancé. Mais même dans ce cas-là, il faut penser à protéger le lien de téléchargement. La méthode POST ne peut plus être utilisée ici, vu qu’il n’y a aucun formulaire et qu’on ne veut pas en mettre un pour réduire le nombre de clics.

C’est là que la fonction cURL() fait son entrée. C’est une fonction qui permet d’appeler une page précise sans qu’elle ne s’affiche ni qu’elle ne soit transmise de façon visible par le navigateur. Personne dans ce cas n’aura accès à l’URL de téléchargement et les données resteront protégées.

Il est aussi conseillé de générer de façon aléatoire un token – une série de caractères uniques et impossibles à deviner – qui sera envoyé avec l’URL intermédiaire dans la boîte mail du client. Quand il aura cliqué sur le lien de téléchargement, le code sur la page intermédiaire vérifiera que le token fourni dans l’URL est valide avant de procéder au téléchargement – toujours en utilisant cURL().

À ce stade, notre contenu est à un niveau de protection acceptable. Mais on peut aller plus loin encore en bloquant l’accès de nos fichiers aux aspirateurs de sites.

hacking-2903156_1920

IV. Éviter les aspirateurs de sites web

Il est fréquent que, par paresse ou parce que les données d’un site sont passablement bien protégées, des personnes malveillantes se servent d’aspirateurs de sites web pour télécharger l’ensemble de leur contenu.

Les aspirateurs en général ne se contentent pas de télécharger les fichiers du site, ils ont également la possibilité de suivre les liens et de télécharger les fichiers vers lesquels ces liens conduisent. Par exemple, si sur le site le lien http://monsitedeventeenligne.com/documents/document-en-vente-1.pdf apparaît, l’aspirateur pourra également télécharger ce fichier.

Pour compliquer la tâche aux aspirateurs, nous allons proposer trois astuces.

1/ Le fichier robots.txt

C’est un fichier texte qu’on retrouve à la racine des sites et qui permet de donner ou de retirer la permission à certains robots d’explorer un site ou certains dossiers ou fichiers. Ce fichier peut donc empêcher les aspirateurs de parcourir le site pour en analyser la structure avant de commencer l’aspiration.

Pour bloquer les aspirateurs de sites, il suffit indiquer le user-agent de l’aspirateur, et indiquer les zones du site qui lui sont interdites. Le code à insérer dans le fichier robots.txt pour interdire l’accès du site à l’aspirateur Httrack par exemple est le suivant :

User-agent: HTTrack

Disallow: /

2/ Le fichier .htaccess

Accès interdit

En plus de la protection des dossiers, le fichier .htaccess permet également de restreindre l’accès au site à certains robots d’indexation, et ce en 3 lignes de code. Reprenons l’exemple avec l’aspirateur HTTrack. Pour le bloquer, il suffit d’ajouter ce code dans le fichier .htaccess :

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} .*HTTrack* [NC]

RewriteRule .* – [F]

3/ Le stockage distant

Même s’il est très efficace, l’utilisation du fichier robots.txt ne garantit pas une protection totale contre les aspirateurs. Dans ce cas, il est judicieux de stocker les documents à télécharger sur une plateforme ou sur un hébergement différent de celui qui abrite le site internet.

Cette méthode va non seulement compliquer l’aspiration du site mais aussi protéger les documents sensibles en cas d’aspiration réussie.

.   .   .   .

Les méthodes dont nous venons de parler n’ont pas une efficacité absolue, et c’est encore peut-être possible d’accéder à des documents de façon frauduleuse, mais au moins, en les combinant et en les approfondissant, vous vous retrouverez avec un système fiable et des données un minimum protégées. Pour terminer, nous vous donnons quelques liens pour mieux comprendre certaines des méthodes expliquées plus haut :

Bibliothèque d’URL client

Protégez un dossier avec un .htaccess

Serveur HTTP Apache Version 2.4

Bloquer les spam bots et aspirateurs de site web avec .htaccess

 

Fotso Fonkam, @petit_ecolier

 

 

 

About Ace (70 Articles)
Ace est un passionné de communication et de startups. Autodidacte formé auprès de professionnels du marketing et de la communication, il allie exploration personnelle, pratique du métier et recherche incessante d'amélioration dans une approche intégrative, qui s'intéresse au secteur de façon globale, en le replaçant au centre de l'entreprise. Sa démarche s'attache à formaliser de manière spécifique les problématiques communicationnelles qui touchent les structures en tenant compte de leurs divers niveaux d'organisation.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :