Aller au contenu

Sujets conseillés

Posté

Bonjour,

J'ai un soucis avec mon site qui visiblement à été "pirater" et à envoyer d'après mon hébergeur 3000 spams.

La page qui à été utiliser pour cela contient juste des codes "includes" et tout ce passe donc via les fichiers qui sont inclus, cette page utilise également une variable "GET" qui va chercher la page à inclure suivant la sous rubrique cliquer.

Je supposes que le "pirate" à utilise la faiblesse des variables d'url, mais je ne vois pas trop comment pouvoir securiser.

Est-ce que l'url rewriting est une solutions valable? ou autres choses évidemment?

Merci de votre aide

Posté

Comment se passe l'include en fonction des variables GET ?

Si c'est de la manière suivante, c'est effectivement dangereux :

<?php include($_GET['page'].'.php'); ?>

Si c'est bien le cas, il faut prévoir ce que tu as le droit d'inclure, ou pas !

<?php
switch($_GET['page']) {
case 'index':
$include = 'index.php';
break;
case 'contact':
$include = 'contact.php';
break;
default:
$include = '404.php';
}

include($include);
?>

Tu peux bien entendu ajouter autant de "case" que tu le souhaites, mais ça empêche qui que ce soit d'inclure des fichiers de ton serveur que tu n'auras pas prévus.

Posté

Re bonjour,

je poste ci-dessous le message de mon hébergeur :

l'url www.mon-domaine.be/services.php vient d'envoyer 3000 spams

cette url ne contient pas de formulaire d'envoie de mail, ou quoi que ce sois du genre, juste

<?php include($_GET['page'].'.php'); ?>

et une variabe qui contient un texte à afficher si pas de variable get passée

donc il me semble que dans mon cas la solutions de captain_torche, ci-dessous le code modifier avec les conseils de captain_torche :


<?php
$Services = "Lidentité visuelle de votre entreprise constitue un outil de communication puissant.<br /><br />
Un site Internet bien pensé, un logo bien construit, une brochure bien ficelée,... peuvent vous démarquer de la concurrence. Nous vous proposons de dynamiser votre image en vous apportant des conseils et des solutions durables dans un réel respect de votre culture dentreprise.<br /><br />
La présence sur le web est devenue un élément incontournable dans la communication d'une entreprise. Cest pourquoi nous travaillons dans le but de vous apporter des solutions sur mesure et un service de qualité conformément à vos besoins.<br /><br />
Dans cette optique, nous vous offrons nos compétences en matière de création et de mise à jour de sites, d'hébergement, de référencement et d'intégration d'éléments multimédias qui dynamiseront votre site internet et donc votre image.";
?>

<?php
if(isset($_GET['p'])){
switch($_GET['p']) {
case 'Concept':
$include = 'Concept.php';
break;
case 'Develop':
$include = 'Develop.php';
break;
case 'Host':
$include = 'Host.php';
break;
case 'Ref':
$include = 'Ref.php';
break;
case 'Main':
$include = 'Main.php';
break;
default:
$include = '404.php';
}

include($include);
}else{
echo $Services;
}
?>

je voulais juste savoir, si avec cet modif j'était tranquille même contre les injections SQL?

merci

Posté

Rien à voir avec les injections SQL, malheureusement ;)

Pour contrer ces dernières, il faut passer toutes les variables issues d'un utilisateur ($_GET, $_POST), à travers la fonction mysql_real_escape_string(). Il y a sans doute d'autres optimisations à faire, mais ça sera un bon début.

Par contre, si des spams sont envoyés, c'est que tu as fatalement un formulaire de contact.

Il faudra le sécuriser lui aussi.

Posté

J'ai effectivement des formulaires sur le site mais pas au niveau de la page service.

c'est ça que je ne comprend pas, non comment le gars à peux faire du spamming à partir d'un script qui ne contient pas la fonction MAIL!!!

Posté

A partir du moment ou ta page service appelle le script de ton (en l'occurrence "son" ;)) choix, il a potentiellement toutes les fonctions de ton site (voire d'autres) à partir de service.php...

J'en reviens à ce que je disais plus haut...sécurise les champs de formulaire susceptibles de générer des en-têtes mail...qu'il le fasse à partir de service.php ou du script en question, c'est pareil, tu spammeras toujours.

Il ne peut envoyer des mails qu'en détournant tes scripts ou en injectant du code de toutes façons (ce qui serait plus grave pour la sécurité de ton serveur).

Posté (modifié)

donc de la page x il peut utiliser le script de la y?

et donc pour protèger au mieux mes variables de formulaire :

je procède comme suit : pour tout les variables


if(isset($_POST['SendEstimate'])){
$nom = mysql_real_escape_string(htmlentities($_POST['nom']));.
etc, etc
}

j'avais aussi fais à l'époque des fonctions de se type pour les formulaire:


function ValidPhone($phone){
$ctrl = '#^0[0-9]{1,3}[0-9]{6,7}$#';
if(preg_match($ctrl,$phone)){
return true;
}else{
return false;
}
}

un grand merci pour votre aide comme vous avez pu le constater suis un peu nul en securité

Modifié par bidibulle
Posté

Pas si tu fais ce que captain_torche t'a dit au niveau de tes includes. Cela dit rien ne l'empêche d'appeler y directement je me trompe ?

htmlentities, c'est pour se prémunir du XSS. mysql_real_escape_string c'est pour une insertion dans une base de donnée.

Si ton $_POST['nom'] sert dans l'entête de l'envoi de ton mail, vérifie qu'il n'y a pas de sauts de ligne (\r\n) d'une manière ou d'un autre, ce sera un bon début. Vérifie que l'email transmis est bien un email etc.

Posté

Il faut également jeter un oeil sur ton formulaire de contact pour éviter l'injection d'entête.

Place éventuellement un patch (si ce n'est pas déjà fait ) du type mail-extra-header(pour avoir les IP dans le source du mail) et change tes accès SMTP (et tous les autres tant que t'y est).

Configure php pour limiter les fonctions pernicieuses.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...