Livre d'or sql piraté

Résolu/Fermé
LLorina Messages postés 318 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 3 octobre 2021 - 4 août 2012 à 20:09
LLorina Messages postés 318 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 3 octobre 2021 - 23 nov. 2012 à 21:35
Bonjour,

J'ai réalisé un site pour une amie Kinésiologue. Pour la gestion des messages déposés sur le livre d'or, j'ai créé une base de données SQL mais je n'ai pas l'habitude des bases SQL, il se peut que des erreurs trainent d'où cette intrusion... ? Je m'étais aidé d'un code trouvé sur internet pour ça.

En passant par hasard aujourd'hui, je me rends compte que le livre d'or a été piraté (ou hacké).
J'ai tout vidé ma table livredor SQL car il y avait 30 000 messages dessus avec des liens, des phrases en anglais de tout type...

Voici le code, pourriez(vous m'aider à trouver mon erreur qui aurait provoqué cette intrusion ou qu'est-ce qui aurait été rajouté à mon insu ?

J'ai juste un gros doute sur
<SCRIPT language="javascript">
function popup(page,nom,option) {
window.open(page,nom,option); }
</SCRIPT>
car je ne me souviens pas de l'avoir mis...
Qu'en pensez-vous ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<title>
			Kinésiologie - Relaxation 30 : Médecine Douce
		</title>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

	<link rel="stylesheet" type="text/css" href="style.css" title="défaut">
<SCRIPT language="javascript">
function popup(page,nom,option) {
window.open(page,nom,option); }
</SCRIPT>


	</head>
	<body lang="fr">
	<div id="page">
		<div id="entete"><?php include("entete.php");?></div>
		<div id="contenu">
			<div id="menuGauche"><?php include("menuGauche2.php");?></div> 
			<div id="texte">
				<h1>Livre d'Or</h1>
					<form method="post" action="livredor.php">
						<p>Un avis sur mon site ? Exprimez-vous ici !</p>
						<p>
						Pseudo : <input name="pseudo" /><br />
						E-mail : <input name="email" /><br />
						Message :<br />
						<textarea name="message" rows="8" cols="35"></textarea><br />
						<input type="submit" value="Envoyer" />
						</p>
					</form>
 
					<p class="pages">
					<?php
						mysql_connect("base", "utilisateur", "mdp");
						mysql_select_db("utilisateur");
 
						// --------------- Étape 1 -----------------
						// Si un message est envoyé, on l'enregistre
						// -----------------------------------------
 
						if (isset($_POST['pseudo']) AND isset($_POST['message']))
						{
							$date=date("Y-m-d H:i");
							$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
							$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
							$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
							$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
 
							// On peut enfin enregistrer :o)
							mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '". $date . "', '" . $email . "')");
						}
 
						// --------------- Étape 2 -----------------
						// On écrit les liens vers chacune des pages
						// -----------------------------------------
 
						// On met dans une variable le nombre de messages qu'on veut par page
						$nombreDeMessagesParPage = 30; // Essayez de changer ce nombre pour voir :o)
						// On récupère le nombre total de messages
						$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livredor');
						$donnees = mysql_fetch_array($retour);
						$totalDesMessages = $donnees['nb_messages'];
						// On calcule le nombre de pages à créer
						$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
						// Puis on fait une boucle pour écrire les liens vers chacune des pages
						echo 'Page : ';
						for ($i = 1 ; $i <= $nombreDePages ; $i++)
						{
							echo '<a href="livredor.php?page=' . $i . '">' . $i . '</a> ';
						}
					?>
					</p>
 
					<?php
 
						// --------------- Étape 3 ---------------
						// Maintenant, on va afficher les messages
						// ---------------------------------------
 
						if (isset($_GET['page']))
						{
							$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livredor.php?page=4)
						}
						else // La variable n'existe pas, c'est la première fois qu'on charge la page
						{
							$page = 1; // On se met sur la page 1 (par défaut)
						}
 
						// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
						$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
						$reponse = mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

						while ($donnees = mysql_fetch_array($reponse))
						{
							echo '<p><strong>' . $donnees['pseudo'] . ' (<a href="mailto:' .$donnees['email'] . '">mail</a>) ' . $donnees['date'] . ' ' . $donnees['heure'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
						}

						mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
					?>
			</div>
		</div>
	</div>
	<div id="pied">
		<p>2012 © Kinésiologie - Relaxation</p>
		<p>Site web créé par NOM WEBMASTER</a></p>
	</div> 
</div>
</body>
</html>
 


Un énorme merci à vous. Le site en question est http://www.kinesiologie-relaxation.com/livredor.php

bon dimanche !


5 réponses

sdp.wifi-bar.com
4 août 2012 à 20:46
Bonjour,
Il est probable qu'il ne soit piraté. mdr.
Il est spammée, Il faut ajouter un code antispams ou une partie admin pour valider les messages



Configuration: Windows XP / Safari 537.1
2
Salut,

htmlspecialchars n'est pas suffisant. Comme le nom de la fonction l'indique, ça protège contre l'inclusion de balises HTML mais pas de fonctions SQL. Et même avec l'autre fonction avant ça reste possible à contourner.

Une solution simple : Utiliser les requêtes préparées avec PDO.

https://lmgtfy.app/?q=pdo+requ%C3%AAtes+pr%C3%A9par%C3%A9es+site+du+zero

a+

Edit : Sinon ça peut venir d'autre part. Vérifies, si tu en as, tes scripts d'upload. Si ils sont mal sécurisés les pirates peuvent envoyer ce qu'on appelle un Shell sur ton site et le contrôler presque entièrement.

Et utilise atoi pour la variable page.

Edit : Le popup c'est pour de la musique de fond apparemment.
Musicalement,
DJ Fire-Bl@ck.
0
LLorina Messages postés 318 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 3 octobre 2021 97
4 août 2012 à 20:43
Merci beaucoup de ta réponse aussi rapide.
Par contre dans le tuto du site du zéro, il est noté de modifié le php.ini
Saurais-tu me dire comment on y accède sur un serveur mutualisé ovh ?
Merci par avance.
0
Utilisateur anonyme
4 août 2012 à 20:52
ça dépend. La majorité des hébergeurs français ont PDO d'installé donc pas besoin d'ajouter / modifier quoi que ce soit. A moins que ton site soit hébergé sur serveur dédié.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
5 août 2012 à 00:46
Salut ...

Si tu disais ce que fait exactement ton livre d'or, on pourrais t'aider a en créer un !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicodu65 Messages postés 48 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 3 septembre 2017
2 sept. 2012 à 18:00
Bonjour,
j'ai le même problème, j'ai créé un livre d'or sur mon site, mais j'ai entre autre des spams qui viennent polluer le livre d'or avec par exemple nom auteur : dsqhbisdbhisbh, une adresse mail du même type et idem pour le message. Comment faire en sorte que ces spams ne puissent entrer sur le livre d'or sans que j'ai moi-même à les supprimer manuellement de la base de donnée?

Merci d'avance.

Cordialement.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
3 sept. 2012 à 02:18
1 - Système de captcha.
2 - Avec les session, or, tu autorise chaque visiteur a poster (par exemple) 5 message par heure.
0
nicodu65 Messages postés 48 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 3 septembre 2017
9 sept. 2012 à 01:04
Merci
0
LLorina Messages postés 318 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 3 octobre 2021 97
23 nov. 2012 à 21:35
Ah bonne idee la limitation par passage par heure. Merci je n'y avais pas pense.
Bon we.
0