IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Nombre d'enregistrement qui ont moins de xx secondes


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut Nombre d'enregistrement qui ont moins de xx secondes
    Bonjour,

    Je viens de me rendre compte que j'ai été victime d'un spam de base de données. En gros, on injectait tout un tas d'enregistrement dans une de mes tables depuis un script exterieur....
    Je précise que je suis sur un serveur MySQL 4.1 (chez Free)

    Je dois donc sécuriser un peu mieux tout cela et je me décide donc a mettre en place toute une batterie de test....

    Un de ces test consiste a regarder avant enregistrement si l'utilisateur ne serait pas en train de spammer ma base en comptant le nombre d'enregistrement inséré depuis les x dernieres secondes dans la table.

    J'ai donc une table "comments" qui possede un champ "created" (date d'enregistrement du commentaire), et 'owner_id' (le user du membre).

    Je me doute que je dois comparer ce champ a la date actuelle et compter le nombre d'neregistrement...

    Seulement je ne vois pas du tout comment m'y prendre pour cette comparaison...

    Si je souhaite remonter le nombre d'enregistrements qui ont moins de 60 secondes, je sais que ma requete commencerais par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT count(id) FROM comments WHERE ???
    Pour le moment je n'ai que des plantages de requete....

    Si vous connaissez également une page compilant les bonnes pratiques pour éviter ce genre de désagrement...

    En vous remerciant par avance
    @+
    cadou

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Il faut utiliser les fonctions TIMEDIFF(...) et NOW() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*)
    FROM comments
    WHERE TIMEDIFF(created, NOW()) < 60
    Sinon, le problème que tu rencontres ressemble beaucoup à une faille de sécurité de type injection SQL.
    Tu trouveras quelques infos dans cette FAQ.

    Bon courage,

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Merci beaucoup, cela fonctionne nickel...
    Je ne penses pas etre victime d'une faille de sécurité de type injection SQL.
    Je penche plutot pour un script qui ne passe pas par les formulaires et qui va directement envoyer des infos pour les enregistrer dans ma base....

    Depuis je n'autorise que les membres a saisir des commentaires et avec cette requete SQL, des qu'il dépasse 5 commentaires en moins d'une minute, je l'envoi sur une voie de garage...

    @+ et encore merci
    Cadou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] effacer les enregistrements qui ont plus d'un an
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 20
    Dernier message: 10/08/2014, 19h46
  2. Réponses: 25
    Dernier message: 06/10/2008, 17h25
  3. Réponses: 14
    Dernier message: 03/10/2008, 16h30
  4. [XPATH] Compter le nombre d'attributs qui ont une valeur donné
    Par doozor dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/05/2008, 10h06
  5. Recuperer les fichier qui ont moins d un moi
    Par flb-iori dans le forum Langage
    Réponses: 1
    Dernier message: 29/11/2007, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo