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

ASP Discussion :

Base access fichier ldb


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Par défaut Base access fichier ldb
    Bonjour,

    lorsque j'utilise ma base access, il reste toujours un fichier ldb ouvert portant le meme nom que la base. Est-ce normal vu que je suis seule a y accéder ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Set C = Server.CreateObject ("ADODB.Connection")
    C.Provider = "Microsoft.Jet.OLEDB.4.0"
    C.ConnectionString = "Data Source=" & Server.MapPath ("base.mdb")
    C.Open
     
    'ouverture de la base
    sql = "Select * from table"
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open sql, C,1,3
    'traitement
     
    'fermeture de la base
    Rs.close
    set Rs = nothing
    C.close
    set C = nothing
    Cordialement.

  2. #2
    Membre Expert
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Par défaut
    Salut,

    Quand tu dis ouverte, tu le voies où sur ton ordinateur à toi ou sur le serveur distant (hébergeur) ?

    Pour ma part j'ai ceci pour fermer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set RS = Nothing
    Conn.Close
    Set Conn = Nothing
    Si c'est en local, c'est que tu as ouvert toi-même Access, d'où ce fichier .ldb car même si tu ouvre une page asp, tu ne le verras pas que la BDD est ouverte.
    Par contre, si c'est sur le serveur distant, c'est parce que ta base s'est faite attaquée certainement par le
    ' = ''
    dans un de tes formulaires, à toi d'empêcher ceci.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Par défaut
    Je le vois sur le serveur.
    Je ne comprends pas bien ce que tu veux dire par ' = ''.
    Peux tu préciser ?

    Cordialement.

  4. #4
    Membre Expert
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Par défaut
    Citation Envoyé par JulieF Voir le message
    Je le vois sur le serveur.
    Je ne comprends pas bien ce que tu veux dire par ' = ''.
    Peux tu préciser ?

    Cordialement.
    Alors là, ce n'est pas bon du tout, t'as base est "cassée" suite à du SQLInjection notamment par le ' = '' qui est une faille de sécurité, il te faut absolument supprimer ta base et la remplacer par une sauvegarde si tu en as une que j'espère pour toi. Car là, en mettant ça dans le formulaire on récupère les informations d'une personne donnée au hasard (j'ai eu le coup heureusement pour moi je connaissais la personne qui l'a fait et qui m'a averti de cette faille)

    De plus, dans tout tes formulaires, et si tu prends des champs de ta base dans l'url (method get) il faut que tu fasses une recherche (instr) dedans pour identifier s'il n'y aurait pas pour valeur le '=''

    Ce qui te donnerait quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if instr(request.querystring("id"),"'=''") <> 0 then
     response.write "Veuillez remplir correctement le formulaire"
    else
     'continuer le code d''identification
    end if

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 24
    Par défaut
    Je ne pense pas que ma base soit "cassée" suite à du SQLInjection, car cela se produit sur toutes mes bases et même lorsque je crée une nouvelle base et que je suis seule en test dessus.

    En tout cas, merci beaucoup pour l'information sur le SQLInjection que je ne connaissait pas. J'ai lu un article sur Wiki à ce sujet qui m'a bien éclaré. http://fr.wikipedia.org/wiki/Injection_SQL


    Contre le SQLInjection, je pourrais ajoutant une fonction qui vérifie les principales fonctions SQL (INSERT, DROP, etc...) .
    Mais je me demande si c'est vraiment util car ma requete se construit coté serveur quand je récupère les données et même si un hacker rajoute des fonctions sql dans mon champ, la requete devrait échouer puisque je la fait commencer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table VALUES ('valeur1', 'valeur2', etc...)
    Pour le probleme d'identification, une solution a laquelle je viens de penser serait de mettre le mot de passe en 1er dans ma requete SQL. Comme cela si un hacker utilise ' -- pour indiquer un commentaire SQL et réduire ma requete, elle sera coupée trop tot. J'aurai par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table WHERE password = ' --
    et il n'y aura aucune incidence.

    Qu'en penses tu ?

  6. #6
    Membre Expert
    Avatar de kaiser59
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 264
    Par défaut
    Etonnant, dans tout les cas tu dois avoir un problème avec ta base car tu ne dois pas voir ta base ouverte notamment par le fichier .ldb qui est visible que se soit en local ou à distance...

    Ne pense pas à une petite requête pour contourner le problème, dit toi qu'il existe des modules firefox par exemple, qui permet d'ajouter dans les champs toutes les combinaisons existantes. Donc la requête ne semble pas être l'idéale.

    L'une des alternatives et de créer une fonction qui remplace toutes les failles de sécurité connue avant de lancer la requête.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function SQLInj (strVerif)
    test = strVerif
    test = replace(test,"'=''","")
    test = replace(test,"1=1","")
    test = replace(ucase(test)," AND ","")
    'etc....
    end function

Discussions similaires

  1. [Débutant] Problème Recordset laissant Base access ouvert (.ldb)
    Par IL-MAFIOSO dans le forum VB.NET
    Réponses: 15
    Dernier message: 09/06/2012, 16h46
  2. Importer fichier texte dans base Access
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/08/2006, 20h21
  3. Réponses: 2
    Dernier message: 25/06/2006, 20h06
  4. Mise à jour de la base Access a partir des fichiers Ascii
    Par mehdichess74 dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 18h00
  5. Stocker / Extraire des fichiers dans une base Access
    Par bryan_fury75 dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/06/2006, 15h17

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