-
Lignes Qui Disparaissent
:cry:
Je serais extrêmement reconnaissant à toute personne qui pourrait me donner une piste.
J'ai un petit site web marchand que j'ai programmé moi-même. Il fonctionne correctement depuis presqu'un an mais un problème incompréhensible et très dommageable pour moi arrive d'abord rarement (mais déjà grave) et maintenant aujourd'hui (perte d'une commande client) : j'ai des lignes de certaines tables qui disparaissent corps et âmes !
Attention, j'ai pu vérifier que ces lignes existaient par le passé (en tout cas, pour certaines). Ensuite, je fais appel à elles (ex : pour éditer une facture) et elles ont disparus. Cela affecte plusieurs tables différentes : mon caddie, mes comptes clients etc.
Aujourd'hui par exemple, le client a pu commander et payer mais moi, je ne pouvais voir ce qu'il avait commandé !
C'est tellement incompréhensible que j'ai même pensé à l'action malveillante d'un pirate.
J'ai téléphoné à mon hebergeur mais il ne voit pas (à part des opérations de maintenance mais je ne crois pas).
Avez-vous déjà entendu parlé de cela ?
Attention : pour aujourd'hui par exemple, je n'ai moi, fait aucune opération sur mon site (à part d'extraire les données pour lire les commandes du jour).
Merci bcp par avance !
-
Pour ma part, je crois qu'il y a un problème dans ton code. POur le vérifier, met ton site web offline pour voir si les lignes changent, cela ne devrait pas être le cas. Sinon, peut-être effectivement des actions malveillantes via du SQL injection ou quelque chose du genre. Ton site web est bien sécurisé? As-tu bloqué le SQL injection?
-
Bonjour Efficks,
Merci pour ta réponse.
Ce qui m'intrigue le plus, c'est que rien ne s'est produit (en tout cas à ma connaissance) de novembre à mai !
Le processus d'effacement ne concerne que trois tables à ma connaissance.
Que veut dire ""mettre son site Offline ?" Qu'est-ce que cela va changer. je ne comprends pas. Je travaille avec Easyphp en offline.
Concernant l'attaque par injection SQL, je croyais avoir blindé le truc (même trop car on peut pas écrire de caractères spéciaux, virgules comprises) en empêchant le code. Il y a des tonnes de logiciels tout faits et connus qui ont des failles exploitables. Pourquoi se creuser avec le mien ?
Maintenant, je me demande la chose suivante : si injection SQL il y a, pourquoi un pirate irait effacer une ou deux vieilles lignes (c'était le cas jusqu'à aujourd'hui) et pas bcp plus ? Pourquoi sur des tables différentes ? Il joue au chat et à la souris ? Mon site est encore peu connu car sur une niche (les sciences). Comment un pirate se serait-il intéressé à moi ?
Cela me rend perplexe sur l'action d'un pirate.
Y-a-t-il un moyen quelconque d'avoir un log sur les actions Mysql ? Ainsi
C'est si effacement avec "Delete" il y a , je le verrais sur le log !
merci encore
-
Au fait, les problemes concernent bizarrement on dirait, soit un seul compte précis, soit une commande précise (correspondant à un compte).
Je précise aussi que les lignes "disparaissent" et non pas vides.
C'est là ou je me dis qu'un pirate n'aurait pas pu effacer si précisemment. Il aurait balayé plus large.
Pour le coup d'aujourd'hui, précisons que la commande était à 13h00 et que c'est le caddie de la personne qui a payé qui a disparu. Je n'ai pourtant rien fait sauf de lire la base (avec mes programmes) afin de voir la commande (créée en format PDF à partir de la commande). Ce ne peut être un pirate : il aurait pas effacé LE CADDIE correspondant à UN CLIENT il me semble (ou un truc m'échappe).
PS : je veux bien qu'il y ait un problème dans mon code mais cela affecterait ainsi trois tables différentes et pas systématiquement (le phénomène se reproduit toutes les 3 semaines environ). De plus, il s'agit bien d'un effacement. Or mon code ne "delete" pas, il "modify".
-
si tu ne peux pas logguer mysql,
loggue ton application et vérifie tout ce qui se passe, les requetes effectuées, les dates des opérations.
si ton appli est en php, tu as log4php http://logging.apache.org/log4php/ (que je ne connais pas, juste de nom). Tu as un forum sur dvp spécifique "logging".
Peut-être que ce que tu peux faire est de conserver un historique de tes données : faire une procédure stockée qui est appelée à chaque delete et qui enregistre dans une table tierce les données deletées (sur cette table ton utilisateur mysql ne devrait pas avoir le droit de delete...je sais que c'est possible en postgresql....)