Protection et licences de logiciels. Comment protéger un forum sur le moteur phpBB des inscriptions automatiques

9 février 2011 à 00:28

Comment protéger un forum sur le moteur phpBB des inscriptions automatiques

  • Spam et antispam

Le moteur de forum phpBB présente de nombreux avantages ; il est pratique à la fois pour les utilisateurs et les modérateurs et, par conséquent, est très populaire. Mais c'est précisément sa popularité qui est à l'origine de son principal inconvénient : il est spammé, et automatiquement spammé. Après un certain temps, un flux constant d'enregistrements de nouveaux faux utilisateurs et de spams de leur part peuvent mettre les nerfs de l'administration du site à rude épreuve.

PhpBB version 3.* dans le package de base contient jusqu'à 4 options captcha qui peuvent être proposées aux utilisateurs lors de leur inscription sur le forum. Il y a même récapitulation, cependant, pour les auto-soumissions, comme le montre la pratique, ce n'est pas un obstacle.

Ces programmes savent à quoi ressemblent les points d'entrée typiques vers les pages d'inscription de différents moteurs de forum. Cette connaissance repose sur la reconnaissance des modèles DOM de pages Web contenant des formulaires d'enregistrement de nouveaux utilisateurs, de publication de messages, etc. C'est par exemple que dans le cas de phpBB, le robot sait que le point d'entrée pour l'inscription se situe à /ucp.php?mode=register et que sur cette page il y a un bouton comme :

Sans entrer dans les détails techniques, je note que vous pouvez trouver et cliquer sur ce bouton dans un document HTML au moins par identifiant ou par nom.

Dès que le robot arrive sur la page contenant le captcha, il reçoit l'image du captcha et essaie de la reconnaître. Différentes technologies peuvent être utilisées ici, en fonction de la sophistication du programme, depuis les algorithmes OCR jusqu'à la simple reconnaissance de captcha par une personne vivante. C'est pourquoi la protection ne fonctionne pas. Interdire les adresses IP sur le forum est également absolument inutile, car les robots spamment via de nombreux serveurs proxy. En ce sens, cela ne fait aucune différence d’interdire des adresses ou de nettoyer de nouvelles inscriptions automatiques d’une manière ou d’une autre, tout cela revient à perdre du temps.

Il s'avère que le seul moyen de supprimer les soumissions automatiques est de modifier légèrement le balisage du point d'entrée au forum d'une manière unique. Il y a deux ou trois ans, j'ai fait cette astuce pour phpBB2 et cela a fonctionné : les inscriptions automatiques ont été arrêtées. La même chose a été récemment confirmée sur un autre site, déjà sur le moteur phpBB3.

Ensuite, je donnerai un exemple spécifique et éprouvé de modification de la page d'inscription phpBB. Je voudrais cependant faire une réserve sur le fait que cet article propose un concept de protection contre les inscriptions automatiques sur les forums, et non des méthodes spécifiques. Tout dépend des mains et du chef de l'administrateur du forum. Il est conseillé d'avoir des connaissances de base en HTML et CSS. Si les lecteurs commencent à copier cette méthode en masse, alors les spammeurs programmeront cette « heuristique » dans leur logiciel et les enregistrements automatiques continueront.

Ainsi, dans les paramètres du forum phpBB, sélectionnez le captcha le plus simple « CAPTHA sans GD ».
Cela ressemble à ceci dans le navigateur (FF3) :

Si vous regardez le balisage de la page d'inscription dans la zone de l'image captcha, cela ressemble à ceci :

En fait, l'attribut src dans la balise img contient l'image avec le captcha. Ouvrez un dossier avec le sujet actuel installé sur le forum. Dans mon cas, c'est prosilver : /forum/styles/prosilver/template. On y trouve le fichier captcha_default.html. Si vous regardez ce modèle, vous pouvez voir l'endroit où le balisage ci-dessus est formé :

Rendons la vie plus difficile aux autosubmitants avec un léger geste :

Cela ressemblera maintenant à ceci dans le navigateur :

Je suis d'accord, ce n'est pas très sympa, mais maintenant les nerfs de l'administrateur iront bien. Les utilisateurs réguliers peuvent toujours s'inscrire. Bien entendu, lors de la mise à niveau du moteur vers une version plus récente, vous devrez vous rappeler de refaire ce correctif. J'espère que les utilisateurs courageux de phpbb ne s'attarderont pas sur cet exemple, mais trouveront d'autres moyens de modifier le point d'entrée en fonction du concept de sécurité proposé.

Dans cet article, je souhaite examiner plusieurs méthodes bien connues pour protéger le contenu d'un site Web contre l'analyse automatique. Chacun d’eux a ses propres avantages et inconvénients, vous devez donc choisir en fonction de votre situation spécifique. De plus, aucune de ces méthodes n'est une panacée et presque tout le monde a ses propres solutions de contournement, que je mentionnerai également.

1. Interdiction par adresse IP

Le moyen le plus simple et le plus courant de déterminer les tentatives d'analyse du site consiste à analyser la fréquence et la fréquence des requêtes adressées au serveur. Si les requêtes provenant d'une certaine adresse IP arrivent trop souvent ou qu'elles sont trop nombreuses, alors cette adresse est bloquée et pour la débloquer il vous est souvent demandé de saisir un captcha.

Le plus important dans cette méthode de protection est de trouver la limite entre la fréquence naturelle et le nombre de requêtes et de tentatives de scraping afin de ne pas bloquer des utilisateurs innocents. Ceci est généralement déterminé en analysant le comportement des utilisateurs normaux du site.

Un exemple d'utilisation de cette méthode est Google, qui contrôle le nombre de requêtes provenant d'une certaine adresse et émet un avertissement correspondant en bloquant l'adresse IP et en vous invitant à saisir un captcha.

Il existe des services (comme distilnetworks.com) qui vous permettent d'automatiser le processus de suivi des activités suspectes sur votre site et même d'inclure la vérification des utilisateurs à l'aide d'un captcha.

Le contournement de cette protection se fait en utilisant plusieurs serveurs proxy qui cachent la véritable adresse IP de l'analyseur. Par exemple, des services comme BestProxyAndVPN fournissent des proxys peu coûteux, et le service SwitchProxy, bien que plus cher, est spécialement conçu pour les analyseurs automatiques et peut supporter de lourdes charges.

2. Utilisation des comptes

Dans cette méthode de sécurité, l'accès aux données est limité aux utilisateurs autorisés uniquement. Cela facilite le contrôle du comportement des utilisateurs et le blocage des comptes suspects, quelle que soit l'adresse IP à partir de laquelle le client travaille.

Un exemple est Facebook, qui surveille activement les actions des utilisateurs et bloque celles qui sont suspectes.

Cette protection est contournée en créant (y compris automatiquement) de nombreux comptes (il existe même des services qui vendent des comptes prêts à l'emploi pour des réseaux sociaux bien connus, par exemple buyaccs.com et Bulkaccounts.com). Une complication importante de la création automatique de compte peut être la nécessité de vérifier le compte à l'aide d'un téléphone pour vérifier son unicité (le soi-disant PVA - Phone Verified Account). Mais en principe, cela peut aussi se faire en achetant de nombreuses cartes SIM jetables.

3. Utiliser CAPTCHA

Il s’agit également d’une méthode courante de protection des données récupérées. Ici, l'utilisateur est invité à saisir un captcha (CAPTCHA) pour accéder aux données du site. Un inconvénient important de cette méthode est l’inconvénient pour l’utilisateur de devoir saisir un captcha. Par conséquent, cette méthode est mieux applicable dans les systèmes où les données sont accessibles dans le cadre de requêtes distinctes et peu fréquemment.

Un exemple d'utilisation du captcha pour se protéger contre la création automatique de requêtes est celui des services permettant de vérifier la position d'un site dans les résultats de recherche (par exemple, http://smallseotools.com/keyword-position/).

Le captcha est résolu à l'aide de programmes et de services pour sa reconnaissance. Ils se répartissent en deux catégories principales : la reconnaissance automatique sans intervention humaine (OCR, par exemple le programme GSA Captcha Breaker) et la reconnaissance assistée par l'homme (où des personnes s'assoient quelque part en Inde et traitent des demandes de reconnaissance d'image en ligne, par exemple le service Bypass CAPTCHA). La reconnaissance humaine est généralement plus efficace, mais dans ce cas, le paiement s'effectue pour chaque captcha, et non une seule fois, comme lors de l'achat du programme.

4. Utiliser une logique JavaScript complexe

Ici, dans une requête au serveur, le navigateur envoie un code spécial (ou plusieurs codes), formés par une logique complexe écrite en JavsScript. Dans le même temps, le code de cette logique est souvent masqué et placé dans un ou plusieurs fichiers JavaScript chargés.

Un exemple typique de l'utilisation de cette méthode de protection anti-analyse est Facebook.

Cela peut être contourné en utilisant de vrais navigateurs pour l'analyse (par exemple, en utilisant les bibliothèques Selenium ou Mechanize). Mais cela donne à cette méthode un avantage supplémentaire : lors de l'exécution de JavaScript, l'analyseur s'affichera dans les analyses de trafic du site (par exemple, Google Analytics), ce qui permettra au webmaster de remarquer immédiatement que quelque chose ne va pas.

5. Changement dynamique de la structure des pages

L'un des moyens efficaces de se protéger contre l'analyse automatique consiste à modifier fréquemment la structure de la page. Cela peut concerner non seulement la modification des noms des identifiants et des classes, mais même la hiérarchie des éléments. Cela complique grandement l'écriture d'un analyseur, mais d'un autre côté, cela complique le code du système lui-même.

En revanche, ces modifications peuvent être effectuées manuellement environ une fois par mois (ou plusieurs mois). Cela gâchera également considérablement la vie des analyseurs.

Pour contourner une telle protection, vous devez créer un analyseur plus flexible et « plus intelligent », ou (si les modifications ne sont pas apportées souvent) simplement corriger manuellement l'analyseur lorsque ces modifications se produisent.

6. Limiter la fréquence des requêtes et le volume des données téléchargées

Cela rend l’analyse de grandes quantités de données très lente et donc peu pratique. Dans le même temps, les restrictions doivent être choisies en fonction des besoins d'un utilisateur type, afin de ne pas réduire la convivialité globale du site.

Ceci est contourné en accédant au site à partir de différentes adresses IP ou comptes (simulation de nombreux utilisateurs).

7. Afficher les données importantes sous forme d'images

Cette méthode de protection du contenu permet de compliquer la collecte automatique des données, tout en conservant un accès visuel à celles-ci par l'utilisateur moyen. Souvent, les adresses e-mail et les numéros de téléphone sont remplacés par des images, mais certains sites parviennent à remplacer même des lettres aléatoires dans le texte par des images. Même si rien ne vous empêche d’afficher intégralement le contenu du site sous forme graphique (que ce soit Flash ou HTML 5), son indexabilité par les moteurs de recherche peut s’en trouver significativement affectée.

L'inconvénient de cette méthode est non seulement que tous les contenus ne seront pas indexés par les moteurs de recherche, mais aussi que l'utilisateur ne peut pas copier les données dans le presse-papiers.

Une telle protection est difficile à surmonter ; il est très probable que vous deviez utiliser une reconnaissance d'image automatique ou manuelle, comme dans le cas du captcha.

Le moteur de forum phpBB présente de nombreux avantages ; il est pratique à la fois pour les utilisateurs et les modérateurs et, par conséquent, est très populaire. Mais c'est précisément sa popularité qui est à l'origine de son principal inconvénient : il est spammé, et automatiquement spammé. Après un certain temps, un flux constant d'enregistrements de nouveaux faux utilisateurs et de spams de leur part peuvent mettre les nerfs de l'administration du site à rude épreuve.

PhpBB version 3.* dans le package de base contient jusqu'à 4 options captcha qui peuvent être proposées aux utilisateurs lors de leur inscription sur le forum. Il y a même récapitulation, cependant, pour les auto-soumissions, comme le montre la pratique, ce n'est pas un obstacle.

Ces programmes savent à quoi ressemblent les points d'entrée typiques vers les pages d'inscription de différents moteurs de forum. Cette connaissance repose sur la reconnaissance des modèles DOM de pages Web contenant des formulaires d'enregistrement de nouveaux utilisateurs, de publication de messages, etc. C'est par exemple que dans le cas de phpBB, le robot sait que le point d'entrée pour l'inscription se situe à /ucp.php?mode=register et que sur cette page il y a un bouton comme :

Sans entrer dans les détails techniques, je note que vous pouvez trouver et cliquer sur ce bouton dans un document HTML au moins par identifiant ou par nom.

Dès que le robot arrive sur la page contenant le captcha, il reçoit l'image du captcha et essaie de la reconnaître. Différentes technologies peuvent être utilisées ici, en fonction de la sophistication du programme, depuis les algorithmes OCR jusqu'à la simple reconnaissance de captcha par une personne vivante. C'est pourquoi la protection ne fonctionne pas. Interdire les adresses IP sur le forum est également absolument inutile, car les robots spamment via de nombreux serveurs proxy. En ce sens, cela ne fait aucune différence d’interdire des adresses ou de nettoyer de nouvelles inscriptions automatiques d’une manière ou d’une autre, tout cela revient à perdre du temps.

Il s'avère que le seul moyen de supprimer les soumissions automatiques est de modifier légèrement le balisage du point d'entrée au forum d'une manière unique. Il y a deux ou trois ans, j'ai fait cette astuce pour phpBB2 et cela a fonctionné : les inscriptions automatiques ont été arrêtées. La même chose a été récemment confirmée sur un autre site, déjà sur le moteur phpBB3.

Ensuite, je donnerai un exemple spécifique et éprouvé de modification de la page d'inscription phpBB. Je voudrais cependant faire une réserve sur le fait que cet article propose un concept de protection contre les inscriptions automatiques sur les forums, et non des méthodes spécifiques. Tout dépend des mains et du chef de l'administrateur du forum. Il est conseillé d'avoir des connaissances de base en HTML et CSS. Si les lecteurs commencent à copier cette méthode en masse, alors les spammeurs programmeront cette « heuristique » dans leur logiciel et les enregistrements automatiques continueront.

Ainsi, dans les paramètres du forum phpBB, sélectionnez le captcha le plus simple « CAPTHA sans GD ».
Cela ressemble à ceci dans le navigateur (FF3) :

Si vous regardez le balisage de la page d'inscription dans la zone de l'image captcha, cela ressemble à ceci :

En fait, l'attribut src dans la balise img contient l'image avec le captcha. Ouvrez un dossier avec le sujet actuel installé sur le forum. Dans mon cas, c'est prosilver : /forum/styles/prosilver/template. On y trouve le fichier captcha_default.html. Si vous regardez ce modèle, vous pouvez voir l'endroit où le balisage ci-dessus est formé :

Rendons la vie plus difficile aux autosubmitants avec un léger geste :

Cela ressemblera maintenant à ceci dans le navigateur :

Je suis d'accord, ce n'est pas très sympa, mais maintenant les nerfs de l'administrateur iront bien. Les utilisateurs réguliers peuvent toujours s'inscrire. Bien entendu, lors de la mise à niveau du moteur vers une version plus récente, vous devrez vous rappeler de refaire ce correctif. J'espère que les utilisateurs courageux de phpbb ne s'attarderont pas sur cet exemple, mais trouveront d'autres moyens de modifier le point d'entrée en fonction du concept de sécurité proposé.

Les logiciels font depuis longtemps partie intégrante de la vie de presque toutes les personnes et organisations. Le nombre d'entreprises produisant des logiciels aujourd'hui est extrêmement important, et chacune d'entre elles s'efforce de créer le meilleur produit du marché aussi rapidement et efficacement que possible. Cependant, de sérieuses menaces peuvent les arrêter.

Problème commercial

Toute entreprise de logiciels sera tôt ou tard confrontée à un ensemble de problèmes pouvant affecter négativement ses revenus, sa réputation et sa position sur le marché. Chaque produit logiciel contient des mécanismes et des données uniques. La plupart d’entre eux sont considérés comme des secrets strictement commerciaux, qui ne doivent en aucun cas être connus de quiconque extérieur à l’entreprise. Dans le même temps, le produit logiciel peut tomber en toute légalité entre les mains de diverses entreprises et particuliers. Parmi eux, il y aura certainement ceux qui voudront bénéficier de manière malhonnête d’une protection logicielle manquante ou faible.

De plus, la vente d'un produit logiciel est un processus complexe et en plusieurs étapes qui nécessite le travail coordonné de nombreux spécialistes. Chaque erreur dans sa construction enlève de l’argent à la société de développement et interfère avec le développement de son activité.

Problèmes qu'un vendeur peut rencontrer :

Concurrents directs et potentiels Les entreprises développant un produit similaire tenteront d'obtenir des algorithmes précieux utilisés dans votre produit logiciel afin de pouvoir les utiliser dans leur propre développement.
Des utilisateurs peu scrupuleux Beaucoup de vos clients actuels ou potentiels préféreraient ne pas payer pour utiliser un logiciel, surtout si cela est facile à faire.
Pirates professionnels Il existe de nombreux spécialistes sur le marché qui pratiquent le hacking personnalisé. S'ils réussissent, au mieux, une entreprise utilisera votre programme et, au pire, votre concurrent apparaîtra sur le marché.
Faible modèle de vente La sélection et la mise en œuvre d'un système de licence logicielle constituent une étape importante dans la prévente de logiciels. Un modèle de monétisation inefficace entraînera inévitablement une perte de profits.
Manque de flexibilité Tout marché évolue constamment et souvent très rapidement. Un élément important d'une entreprise est d'être capable de s'adapter rapidement aux nouveaux besoins des clients - de la modification de l'ensemble des produits et modules expédiés à la modification de l'ensemble du modèle de licence et à l'offre de conditions individuelles au client.
Coût de possession élevé L’utilisation d’outils rigides et inefficaces augmente le temps d’exécution des processus métiers internes du fournisseur. Par exemple, publier une nouvelle version d'un logiciel, créer une licence, la livrer au client, etc. Plus le travail manuel nécessaire pour soutenir ces processus est important, plus les coûts d’exploitation sont élevés et plus les bénéfices sont faibles.

Solution d'entreprise

La technologie et la pile de produits Guardant nous permettent de fournir une solution complète aux problèmes liés à la protection et aux licences des produits logiciels. Principales caractéristiques :

Protection de la propriété intellectuelle
  • Lutte contre l'ingénierie inverse et l'analyse de code ;
  • Protection du programme contre le piratage et la modification ;
  • Protection contre la distribution incontrôlée de logiciels ;
  • Possibilité de mettre en place vos propres mécanismes de protection.
Licence de produit sécurisée
  • Prend en charge presque tous les systèmes de licence ;
  • Protection contre la violation des termes de la licence
  • Prise en charge du cycle de vente complet - de l'expédition initiale au renouvellement de la licence à distance ;
  • Technologie permettant de créer des conditions de licence individuelles pour le client ;
  • Possibilité d'implémenter vos propres algorithmes de monétisation.
Utilisation efficace de la technologie
  • Haut degré d'automatisation des processus de protection et de délivrance des licences ;
  • Possibilité d'intégration avec des systèmes de gestion tiers (ERP, CRM, etc.) ;
  • Capacité à intégrer des technologies de sécurité dans les serveurs de build
  • Mécanismes universels adaptés à presque tous les types de logiciels.

Récemment, sur Internet, vous pouvez trouver de plus en plus de robots spammeurs qui non seulement s'enregistrent automatiquement, mais ajoutent également des messages de spam sur les forums, dans les commentaires, etc.

Les actions des robots peuvent également entraîner des conséquences plus graves. Imaginez que vous ayez un formulaire qui saisit des données dans une base de données après son envoi, et que pourrait-il se passer si en un instant le formulaire était automatiquement rempli et soumis par des milliers et des dizaines de milliers de robots.

Très souvent, il est nécessaire de se protéger contre ces robots. En règle générale, la protection est principalement organisée sous la forme d'un paramètre supplémentaire qui doit être saisi dans l'un des champs du formulaire et que le bot ne peut en aucun cas déterminer. Ceci est mis en œuvre à l'aide d'une image avec des lettres ou des chiffres (ou les deux en même temps) au cours de sessions ou via l'adresse IP des visiteurs. Dans cet article, je vais vous aider à comprendre comment créer une telle image en utilisant PHP et MySQL en quelques minutes.

Tout d'abord, créons une petite table de base de données dans laquelle l'adresse IP des visiteurs et les valeurs des nombres affichés dans l'image seront temporairement stockées :

Test CREATE TABLE (IP char(15) NON NULL, Number char(3), PRIMARY KEY(IP))

Le type de champ Numéro indique que nous afficherons trois nombres sur chaque image.

Ayons un certain formulaire qui envoie des données à la page ok.php. Une partie du code de la page sur laquelle se trouve le formulaire ressemblera à ceci.

Code du fichier index.php :

Nom:
Texte:
Entrez les chiffres dans l'image : "; @mysql_connect("localhost", "login", "pass") ou die; @mysql_select_db("dbname") ou die("Échec de la connexion à la base de données"); mysql_query("INSERT INTO test VALUES("" .$ip."", "".$x."")"); ?>

Le formulaire comporte deux champs pour saisir des données (Nom et Texte) et un champ pour saisir la valeur des nombres de l'image (qui porte le nom dans le texte)

$ip = $_SERVER["REMOTE_ADDR"];

Nous déterminons l'adresse IP du visiteur de la page.

pour ($i=0; $i<3; $i++) $x=$x.mt_rand(1,9);

À l'aide de la fonction mt_rand, nous générons trois nombres aléatoires de 1 à 9 et les représentons sous la forme d'une chaîne $x.

écho " ";

Ligne clé. Nous affichons l’image réelle en chiffres. Le code du fichier pic.php est décrit ci-dessous.

@mysql_connect("localhost", "login", "pass") ou die("Impossible de se connecter à l'hôte de la base de données"); @mysql_select_db("nomdb") ou die("Échec de la connexion à la base de données"); mysql_query("INSERT INTO test VALUES("".$ip.", "".$x."")");

Nous nous connectons à la base de données et écrivons l'adresse IP et une chaîne avec des chiffres dans la table de test.

Dessinez un bouton de soumission de données et fermez le formulaire :)

Code du fichier pic.php :

D'après ce que vous devez savoir dans ce code : $rgb est la couleur d'arrière-plan de l'image, $textcolor est la couleur des nombres affichés dans l'image. Comme vous l'avez remarqué, l'image sera générée au format GIF.

Il ne reste plus qu'à traiter les données reçues sous la forme dans le fichier ok.php (où ces données sont réellement transférées).

Code du fichier ok.php :

Encore une fois, nous déterminons l'adresse IP de l'utilisateur et comparons si une telle adresse est enregistrée dans le tableau de test. Si oui, vérifions :

mysql_result($res,0,0)!=$intext

Ce sont les numéros que l'utilisateur a saisis dans le formulaire dans le champ de texte, qui ont été affichés dans l'image et écrits à côté de son adresse IP dans la base de données. C'est tout :)

La seule chose qu’on peut ajouter, c’est que ce mécanisme ne représente certainement pas un idéal de protection. Par exemple, un utilisateur peut accéder à une page avec un formulaire, le script enregistrera son IP, et il rechargera la page. Mais dans cet article, je n'ai pas poursuivi l'objectif d'écrire un script à part entière, mais je voulais seulement vous familiariser avec le principal mécanisme permettant de développer une telle protection.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :