Spam inscription newsletter

Spam inscription newsletter - Divers - Programmation

Marsh Posté le 08-08-2025 à 01:48:31    

Bonjour
 
J'ai un site internet que j'ai codé moi même de façon autodidacte. J'ai une vingtaine d'années d'expérience et je me débrouille plutôt pas mal, mais mes bases ne sont pas toujours solides.
 
J'ai une fonction d'inscription à la newsletter codée en php et js. N'y connaissant pas grand chose en js, je ne l'ai pas trop sécurisée (pas de captcha). Les visiteurs entrent leur adresse mail, un mail leur ai envoyé avec un lien contenant un code aléatoire qui permet de valider le mail. Je n'ai jamais eu de problèmes en 3 ou 4 ans, sauf depuis environ 1 mois, ou j'ai essentiellement 6 adresses IP, du Nigéria, Ghana et USA qui me spamment la fonction (196.251.70.18, 196.251.81.2, 196.251.81.207, 198.46.135.26, 198.46.135.27, 198.46.135.28). J'ai mis un peu de temps à m'en rendre compte (j'ai reçu des réponses automatiques de personnes en vacances), mais j'ai eu environ 600 inscriptions avec seulement 4 ou 5 validées.  
 
J'ai désactivé la fonction d'inscription pour le moment et mis en place un blacklistage d'adresse IP par redirection: header('Location: /erreurs/blacklist'); exit;
J'imagine qu'un blocage par le .htaccess est plus sécurisé mais il faut entrer les adresses manuellement, alors que là je les rajoute en 2 clic dans ma base de donnée via mon panneau d'admin.
 
Je ne comprend pas le but de cette manœuvre. Il n'y a pas d'injection de code j'ai l'impression. J'utilise htmlspecialchars (trim ($_POST['email'])). L'objet, le contenu et les headers sont préremplis dans le php, il n'y a que le destinataire qui a un champ à remplir par l'utilisateur. Quel est l’intérêt d'envoyer un mail à un tiers avec un contenu inintéressant pour le spammeur? Il n'y en a pas non plus des milliers, je me dit qu'ils auraient pu en envoyer 1 par seconde pendant plusieurs jours, donc ca ne semble pas non plus dans le but de pourrir une adresse mail (un peu comme une attaque ddos mais pour les mails.)
 
Merci d'avoir pris le temps de me lire et de m'éclairer.
 
Bonne journée


Message édité par Toto769 le 08-08-2025 à 01:49:11
Reply

Marsh Posté le 08-08-2025 à 01:48:31   

Reply

Marsh Posté le 08-08-2025 à 07:24:08    

Surement un bot un peu stupide qui crawl Internet à la recherche de formulaires de contact (ou d'inscription) à utiliser les  pour spammer de la pub ou des intox sauf que codé avec les pieds il ne s'est même pas rendu compte qu'il n'étais pas possible d'envoyer de contenu...


---------------
D3
Reply

Marsh Posté le 09-08-2025 à 18:02:33    

Oui, il ne faut pas toujours chercher une motivation profonde derrière ce genre de trucs. J'ai une machine qui a été bombardée de tentatives de logins pendant des jours sur une page sécurisée alors que derrière rien ne peut intéresser le pirate qui n'avait certainement pas la moindre idée de où il se promenait et n'aurait rien pu faire d'utile même s'il avait trouvé le login/pass.
Je m'en suis rendu compte trop tard pour agir sur le coup, depuis il y a un blocage temporaire de 30 minutes en cas d'échecs répétés, etc.


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-08-2025 à 19:06:15    

+1, y'a tellement de merde et de trucs bizarres sur le net... Après faut quand même rester vigilant, sécuriser ses accès SSH et Cie, "nettoyer" tout ce qui arrive sur le serveur (voir Bobby Tables :o ), ...


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 12-08-2025 à 00:08:05    

Merci pour toutes vos réponses. Ca me rassure un peu.
Je pense avoir sécurisé un peu la fonction.
 
Est ce qu'il y a des moyens de vérifier la sécurité de son site internet? Attaques XSS, injections SQL, force brute, ... Est ce qu'il y a des sites qui font des audits? Quel prix pour une douzaine de pages?

Reply

Marsh Posté le 12-08-2025 à 12:26:24    

Y'a des sociétés spécialisées en "Pentesting" (penetration testing), mais ça doit douiller au niveau prix. Après rien ne t'empêche de lancer quelque attaques avec les logiciels qui vont bien contre ta propre infrastructure et voir ce que ça donne. Sauf que 1) on ne pourra en parler ici (le règlement du forum interdit de parler de hacking et assimilé) et 2) il faut faire attention à ne pas faire de gaffe. Genre si tu es sur un serveur partagé et pas ton propre serveur dédié faut pas faire n'importe quoi j'imagine. Après j'y connais rien moi non plus. :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
Reply

Marsh Posté le 12-08-2025 à 14:58:35    

On peut parler des principes de base j'imagine.

 

Tu as effectivement des logiciels (et en particulier des distributions linux  spécialisées qui regorgent d'outils, dont une dont tu trouveras le nom en 30s avec google) spécialisés en cybersécurité/pentesting.
Beaucoup d'outils sont automatiques (ex : utiliser des dictionnaires pour scanner de manière systématique toutes les url possible sur un site pour trouver des pages ou des dossiers cachés, faire du brute force de mot de passe...) mais tu as rapidement besoin d'un peu d'expertise et de bon sens humain pour les utiliser à bon escient.

 

Vu qu'à te lire ton site est petit et que tu comprends 100% de son code, je pense que sans passer par ces automatismes tu peux déjà avec un peu de bon sens anticiper les failles et restreindre la surface d'exposition, pourvu que tu comprennes d'abord les failles en question.
Tu en as cité quelques unes : XSS, injection SQL. Il y a des classiques comme les formulaires qui bouffent du GET / POST non sanitisé à tout va ou qui permettent de l'énumération de données sensibles, inclusions de fichiers trop permissives, upload de fichiers non filtré, etc.

 

Plutôt que sous traiter ça à une boîte à ta place je commencerais par comprendre les types de failles les plus communs et te demander "est ce que mon code y est vulnérable de façon flagrante" ?
Parfois les contre mesures à appliquer sont très simples.


Message édité par TotalRecall le 12-08-2025 à 14:59:54

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-08-2025 à 00:16:50    

J'adore le nom de Pentesting, je ne connaissais pas. Oui je suis sur un serveur partagé OVH.  
 
- Le brute force je ne pense pas que ce soit nécessaire car déjà je ne pense pas que mes mots de passe fassent partie d'un dictionnaire de mdp et qu'en plus je bloque au bout de 3 tentatives (j'enregistre le nombre de tentative dans $_SESSION et je bloque au bout de 3). Mais par exemple je ne sais pas trop si on peut contourner (en changeant d'IP peut être mais j'imagine que c'est trop long pour faire du brute force).
 
- XSS je pense que j'ai protégé mes variables GET / POST. Mais est ce que je n'en ai pas oublié?
 
- injection SQL je ne pense pas être sécurisé car j'utilise une fonction qui date de plus de 10 ans je pense, qui permet de compter le nombre de requêtes et qui utilise @mysqli_query. Je n'ai pas vraiment compris le principe des requêtes préparées.
 
- j'avais vu des logiciels mais sur linux (je suis sous Windows). Je n'avais pas pensé aux distrib, ca doit pouvoir se lancer en live CD, je vais y reflechir.
 
En fait je crois que j'ai un peu la flemme, car j'arrive à coder un truc qui fonctionne, et je dois encore apprendre pour savoir coder plus proprement (si je commentais plus mon code ca serait mieux aussi...) pour un résultat qui sera presque identique. C'est sûrement ce qui différencie un amateur d'un pro ou d'un passionné. Finalement, je voulais faire un truc tout simple, et au final j'y ai déjà passé au moins 100 ou 200 heures...
 
Sinon vous pensez qu'avec une IA on peut gagner du temps?
 
Merci en tout cas pour vos réponses

Reply

Marsh Posté le 13-08-2025 à 07:23:54    

Une IA à laquelle tu donnes tout ton code pourra très facilement l'analyser et te dire tout ce qui ne va pas dedans oui. Et te proposer une meilleure implemention.


Message édité par TotalRecall le 13-08-2025 à 07:24:27

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-08-2025 à 07:47:14    

Toto769 a écrit :

- Le brute force je ne pense pas que ce soit nécessaire car déjà je ne pense pas que mes mots de passe fassent partie d'un dictionnaire de mdp et qu'en plus je bloque au bout de 3 tentatives (j'enregistre le nombre de tentative dans $_SESSION et je bloque au bout de 3). Mais par exemple je ne sais pas trop si on peut contourner (en changeant d'IP peut être mais j'imagine que c'est trop long pour faire du brute force).


Pour une session il faut que le navigateur du client envoie un header avec le cookie de session pour qu'il soit identifié, donc si un bot malveillant veut trouver ton mot de passe il ne va pas te faire cette fleur.

Toto769 a écrit :

- XSS je pense que j'ai protégé mes variables GET / POST. Mais est ce que je n'en ai pas oublié?


Le XSS c'est quand même très spécifique comme type d'attaque, est ce que ton site est alimenté en contenu par des utilisateurs (contenu, commentaires, images, etc.) ?
Si oui sanitize a l'enregistrement et à l'affichage et tu sera quand même pas mal protégé.
Si non (juste ton enregistrement à ta newsletter) alors tu ne risques rien.

Toto769 a écrit :

- injection SQL je ne pense pas être sécurisé car j'utilise une fonction qui date de plus de 10 ans je pense, qui permet de compter le nombre de requêtes et qui utilise @mysqli_query. Je n'ai pas vraiment compris le principe des requêtes préparées.


Il faut a tout pris protéger les inputs des utilisateurs susceptible de se retrouver dans une requête SQL : https://bobby-tables.com/
https://www.php.net/manual/fr/secur [...] ection.php
https://www.php.net/manual/fr/mysql [...] string.php

Toto769 a écrit :

- j'avais vu des logiciels mais sur linux (je suis sous Windows). Je n'avais pas pensé aux distrib, ca doit pouvoir se lancer en live CD, je vais y reflechir.
 
En fait je crois que j'ai un peu la flemme, car j'arrive à coder un truc qui fonctionne, et je dois encore apprendre pour savoir coder plus proprement (si je commentais plus mon code ca serait mieux aussi...) pour un résultat qui sera presque identique. C'est sûrement ce qui différencie un amateur d'un pro ou d'un passionné. Finalement, je voulais faire un truc tout simple, et au final j'y ai déjà passé au moins 100 ou 200 heures...
 
Sinon vous pensez qu'avec une IA on peut gagner du temps?
 
Merci en tout cas pour vos réponses


De rien, je ne suis pas sur que tu ai besoin de sécuriser plus ton accès admin (tu peux voir a rajouter un captcha éventuellement) par contre fait gaffe à tes requêtes SQL.


---------------
D3
Reply

Marsh Posté le 13-08-2025 à 07:47:14   

Reply

Marsh Posté le 13-08-2025 à 22:21:29    

mechkurt a écrit :

Surement un bot un peu stupide qui crawl Internet à la recherche de formulaires de contact (ou d'inscription) à utiliser les  pour spammer de la pub ou des intox sauf que codé avec les pieds il ne s'est même pas rendu compte qu'il n'étais pas possible d'envoyer de contenu...


Nn tesponse.

Reply

Marsh Posté le 13-08-2025 à 22:23:29    

TotalRecall a écrit :

Oui, il ne faut pas toujours chercher une motivation profonde derrière ce genre de trucs. J'ai une machine qui a été bombardée de tentatives de logins pendant des jours sur une page sécurisée alors que derrière rien ne peut intéresser le pirate qui n'avait certainement pas la moindre idée de où il se promenait et n'aurait rien pu faire d'utile même s'il avait trouvé le login/pass.
Je m'en suis rendu compte trop tard pour agir sur le coup, depuis il y a un blocage temporaire de 30 minutes en cas d'échecs répétés, etc.


Self control.


---------------
jovalise (C) 2002 Manuel De Girardi
Reply

Marsh Posté le 13-08-2025 à 22:24:34    

rat de combat a écrit :

+1, y'a tellement de merde et de trucs bizarres sur le net... Après faut quand même rester vigilant, sécuriser ses accès SSH et Cie, "nettoyer" tout ce qui arrive sur le serveur (voir Bobby Tables :o ), ...


Price ?
 
[quote]tout ton code pourra très facilement l'analyser et te dire tout ce qui ne va pas dedans oui. Et te proposer une meilleure implemention.[/quotemsg]
Php.


Message édité par lady287 le 13-08-2025 à 22:28:46

---------------
jovalise (C) 2002 Manuel De Girardi
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed