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

Sécurité Discussion :

Interdire la connexion avec une BDD non chiffrée


Sujet :

Sécurité

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut Interdire la connexion avec une BDD non chiffrée
    Bonjour,

    J'ai une application en ACCESS 2007 qui est liée avec une base chiffrée avec un Password. Dans la routine de mise à jour des liaisons j'ai intégré ce mot de passe ce qui permet aux utilisateurs de se connecter "proprement" si ils ont la base avec le bon mot de passe.
    Par contre j'ai un problème : Si la base ne comporte pas de mot de passe je peux quand même me connecter et je voudrais interdire cela.
    Est-ce possible d'interdire la connexion avec une base dorsale qui n'A PAS de mot de passe ?
    Merci de votre contribution

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Tu peux tester si la base à laquelle t'attacher est protégée ou non avec DAO.

    Par exemple si je crée une fonction comme celle-ci
    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
    17
    Function PeutOuvrirBDD(strDB As String) As Long
    Dim db As DAO.Database, lRetval As Long
     
    On Error GoTo ErrH
    Set db = OpenDatabase(strDB, False, True)
    db.Close
    lRetval = 0
     
    Exit_Func:
    Set db = Nothing
    PeutOuvrirBDD = lRetval
    Exit Function
     
    ErrH:
    lRetval = Err.Number
    Resume Exit_Func
    End Function
    Je peux l'exploiter ainsi :
    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
    Dim strDB As String, lErrNum As Long
     
    ' on suppose que le chemin complet de la base de données à tester
    ' est dans la variable strDB
     
    lErrNum = PeutOuvrirBDD(strDB)
    Select Case lErrNum
        Case 0
            ' BDD peut être ouverte sans mot de passe
     
        Case 3031
            ' BDD protégée par mot de passe
     
        Case Else
            ' Une erreur s'est produite lors de la tentative d'ouverture
    End Select
    A+

  3. #3
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Merci LedZeppII,

    Ta technique est astucieuse et marche parfaitement, je te remercie.
    J'ai un dernier souci dans la même veine et j'espère que tu pourras me donner un coup de main :
    Je dois fabriquer une base et ajouter des tables spécifiques, pour ce faire j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set acApp = New Access.Application
    acApp.OpenCurrentDatabase stBase2, True, ";PWD=" & stPassword
    mais ACCESS me demande néanmoins d'entrer le mot de passe pour pouvoir activer la commande.
    Comment dois-je faire, ou ai-je loupé quelque chose ?

    Merci de votre aide

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Il n'y a pas besoin de ";pwd=".

    Le dernier argument est simplement le mot de passe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set acApp = New Access.Application
    acApp.OpenCurrentDatabase stBase2, True, stPassword
    A+

  5. #5
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Merci LedZeppII, tu m'enlève mes problèmes 1 par 1
    Un de mes derniers soucis est dans le code ci dessous :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Set acApp = New Access.Application
    acApp.OpenCurrentDatabase stBase2, True, stPassWord
     
    DoCmd.SetWarnings False
     
    With acApp
     
    Set DbPermanent = DBEngine.OpenDatabase(stBase1) 'Base permamente
     
    For Each tdf In DbPermanent.TableDefs
      If (tdf.Attributes And dbSystemObject) = 0 Then     ' enlève les tables systèmes
        stTab0 = tdf.Name
        acApp.DoCmd.TransferDatabase acImport, "Microsoft Access", stBase1, acTable, stTab0, stTab0
        Debug.Print tdf.Name
      End If
    Next
     
    stSQL = "DELETE * FROM T_MOD " _
        & " WHERE C_MOD_NMOD not IN " _
        & " (SELECT C_RMI_NMOD FROM T_RRE;);"
    .DoCmd.RunSQL stSQL
     
    ....
     
    End With
     
    ...
    Erreur:
    Traite_Table = -3
    DoCmd.SetWarnings True
    Set acApp = Nothing
     
    End Function
    Je réintègre des tables de stBase1 vers stBase2 puis, je "nettoie" certaines des tables intégrées avec une requête SQL.
    Malheureusement l'action est interrompue et le code erreur est 2501 = "L'action RunSQL a été annulée."

    As-tu une idée pour régler ce problème ?
    Merci par avance.

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Enlève les ; dans la requete ( : 2 c'est déjà 1 de trop)
    Enlève le . à
    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Merci micniv
    Je suis d'accord pour les ";" mais moins pour le "." devant "DoCmd".
    Je veux en effet exécuter le code SQL sur l'autre instance de ACCESS ouverte (acApp) avec la base stBase2, c'est pour cela que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    acApp.OpenCurrentDatabase stBase2, True, stPassWord
    
    With acApp
    stSQL = "DELETE * FROM T_MOD " _
        & " WHERE C_MOD_NMOD not IN " _
        & " (SELECT C_RMI_NMOD FROM T_RRE)"
    .DoCmd.RunSQL stSQL
    
    End With
    sinon j'applique la requête à la base active et ce n'est pas ce que je veux ...
    Apparemment ce code semblait marcher avant que je rajoute les accès avec mot de passe. Peut être que cette technique n'est pas la meilleure avec cette contrainte ?

Discussions similaires

  1. Créer une connexion avec une BDD
    Par blablabli dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2013, 21h05
  2. créer un service web en connexion avec une BDD
    Par mouned dans le forum Services Web
    Réponses: 5
    Dernier message: 30/03/2012, 19h27
  3. Probleme de connexion avec une bdd ms sql server 2005 dans un reseau local
    Par mead_Developper dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/03/2011, 21h27
  4. Problème de connexion avec une BDD Oracle
    Par Drey242 dans le forum JDBC
    Réponses: 3
    Dernier message: 24/11/2010, 11h39
  5. Connexion avec une bdd Palo
    Par patic dans le forum Pentaho
    Réponses: 9
    Dernier message: 01/04/2010, 23h42

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