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

Bases de données Delphi Discussion :

Sécuriser une base de données Access


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut Sécuriser une base de données Access
    Salut
    ya t'il une solution dans le quelle je peut securiser ma base de donnée (acsses) car n'importe quelle perssonne peut ouvrire le fichier acsses est faire des modification son passer par l'application
    Remarque:mon application et une application mono poste.
    merci d'avance

  2. #2
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Salut !

    1 - Comment accèdes-tu à ton fichier access ? Par dbGO, dans ta ConnectionString tu peux utiliser le paramètre 'Jet OLEDB:Database Password="xxxxxxx";'. Si tu crées ton fichier *.mdb avec ta TADOConnection, seul ton programme connait le mot de passe et peut s'en servir lors des réouvertures successives de la base.

    2 - Si tu disposes d'une base *.mdb : je pense qu'il te faut mettre un mot de passe manuellement dans ta base, puis le renseigner dans ta ConnectionString.

    ;);)
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 62
    Points : 52
    Points
    52
    Par défaut
    Effectivement comme la dis archonte la sollution est de metre manuelement un mot de passe à ta BD puis le rensegner dans la connexion string....

    Il ya aussi une autre sollution, cel du cryptage. Elle est efficace mais plienne de casses tete, si tu cherche bien tu trouveras bien une discution qui parle de ça (cryptage) dans ce forum, je me rappel l'avoir vu ya longtemps.
    Bon courage!

  4. #4
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Par ADO, il y a aussi l'option dans la ConnectionString : 'Jet OLEDB:Encrypt Database=True;' dont je ne me suis jamais servi !!

    Ceci dit, crypter une base n'empêche pas d'y accéder ? d'ou l'idée d'un mot de passe ....
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  5. #5
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par archonte Voir le message
    Par ADO, il y a aussi l'option dans la ConnectionString : 'Jet OLEDB:Encrypt Database=True;' dont je ne me suis jamais servi !!

    Ceci dit, crypter une base n'empêche pas d'y accéder ? d'ou l'idée d'un mot de passe ....
    salut
    Si il met un mot de passe pour sa base access pour la protéger je croit qu'il sera confronter a mon problème !!! qui est dans ce forum avec titre delphi>ba
    ses de données>Access protéger et adoquery
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  6. #6
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par host22 Voir le message
    salut
    Si il met un mot de passe pour sa base access pour la protéger je croit qu'il sera confronter a mon problème !!! qui est dans ce forum avec titre delphi>ba
    ses de données>Access protéger et adoquery
    Tu peut mettre un mot de passe access et te connecter de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;
    DataSource=' + 'c:\tabase.mdb' +';Persist Security Info=False;Jet OLEDB:Database Password="' + 'ton mot de passe' + '";';
        adoconnection1.connected:=true;
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2003
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2003
    Messages : 58
    Points : 51
    Points
    51
    Par défaut
    Salut *,

    j'ai tj utilisé une base de données access protégé par un mot de passe sans aucun problème,

    il est possible de protéger ta base de données via access en utilisant le menu outils -> sécurité -> Définir le mot de passe de la base de données,

    en suite tu ouvre ta base de données en utilsant par exemple le code la fonction Open de la composant TADOConnection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaConnexionAdo.Open('','mon mot de passe');
    pour la "connection string" j'utilise la fonction 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
     
    function TMainDM.getConnectionString(DataBaseName: String; DataSourceName: String):String;
    var
      DataBaseDir : String;
    begin
      // le chemin de ma base de données
      DataBaseDir := ExtractFilePath(Application.ExeName)+'DataBase';
     
      if (DATABASE_TYPE = ACCESS) then
      begin
            result := 'Provider=MSDASQL.1;';
            result := result + 'User ID=admin;';
            result := result + 'Extended Properties="DBQ='+DataBaseDir+'\'+DataBaseName+'.mdb;';
            result := result + 'DefaultDir='+DataBaseDir+';';
            result := result + 'Driver={Microsoft Access Driver (*.mdb)};';
            result := result + 'DriverId=25;FIL=MS Access;';
            result := result + 'MaxBufferSize=2048;';
            result := result + 'MaxScanRows=8;';
            result := result + 'PageTimeout=5;';
            result := result + 'SafeTransactions=0;';
            result := result + 'Threads=3;';
            result := result + 'UID=admin;';
            result := result + 'UserCommitSync=Yes;"';
      end
      else
      begin // SQL Server via ODBC
            result := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source='+DataSourceName;
      end;
    end;
    tu peut initialiser ta connection au moment de la création de ta fiche (DM) par le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      MaConnexionAdo.LoginPrompt := False;
      MaConnexionAdo.Close;
      MaConnexionAdo.ConnectionString := getConnectionString('nom de fichier access','data source odbc');
      MaConnexionAdo.Open('','mot de passe access'); 
      // ou MaConnexionAdo.Open('login sql server','mot de passe sql server');
    Cdt,
    Burkan

  8. #8
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    Juste un petit mot sur la protection des BD ACCESS. Y a pas mal d'utilitaires qui court-circuitent le mot de passe d'une base de données ACESS.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  9. #9
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    salut trés bien détaillé par burkan;
    merci à toi
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  10. #10
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Salut;

    Juste un petit mot sur la protection des BD ACCESS. Y a pas mal d'utilitaires qui court-circuitent le mot de passe d'une base de données ACESS.
    Dans ces conditions, est-ce que la façon la plus sûre de protéger une table access serait de lui affecter un mot de passe et de la crypter ?

    Merci
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  11. #11
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par archonte Voir le message
    Dans ces conditions, est-ce que la façon la plus sûre de protéger une table access serait de lui affecter un mot de passe et de la crypter ?

    Merci
    Ou tout simplement passer à un autre SGBD plus sécurisé !
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  12. #12
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par archonte Voir le message
    Dans ces conditions, est-ce que la façon la plus sûre de protéger une table access serait de lui affecter un mot de passe et de la crypter ?

    Merci
    Personellement j'ai surtout vu des utilitaires qui cassent le mot de passe de la base et ainsi te disent avec quel mot de passe tu dois te connecter.
    Je n'ai vu de base Access cryptée. Je ne sais pas ce que ça vaut. Mais en général, il est plus facile de crypter et protéger un mot de passe qu'une base de données complète. Le mot de passe ne doit être vérifié qu'une seule fois. Donc on peut plus facilement utiliser des cryptages forts.
    Si les mots de passe des bases ACCESS sont cassés aussi facilement, c'est sûrement que celui de la base doit être encore plus simple.

    Et de toute façon, je ne pense pas que crypter la base empêche ces utilitaires de casser le mot de passe... donc une fois que tu as le mot de passe, tu te connectes à la base et lit les données, qu'elle soit cryptée ou pas... sauf si tu utilises ta propre solution de cryptage pour crypter les données avant de les écrire en base.

    Mais bon, si tu veux de la sécurité, n'utilise pas ACCESS.
    Tu peux utiliser SQL Server Compact par exemple qui est aussi léger qu'ACCESS et t'offrira une sécurité plus adaptée aux machines actuelles.

  13. #13
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    Salut;
    Moi je dit que des fois on est obligé de travailler sous Access je sais qu'il ya un niveau de sécurité qui n'est pas trés fiable, mais on ne peut pas obliger tout le monde a laisser tomber Access
    Personnellement je crypte la base pour que les utilisateurs de mon logiciel ne puissent pas l'ouvrir sur access sinon on va perdre même l'intégrité de la base aprés une fausse manip...
    Bon continuation
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  14. #14
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Autre solution, s'appuyer sur la gestion interne de droit d'access en utilisasant une base système associé à ta base "data"

    Je l'ai pratiqué il y a un certain temps maintenant donc

    Sur access, créer un fichier groupe de travail avec un identifiant complexe à rallonge. Ensuite toujours via access, gérer les droits dans ta base pour que le user par défaut (administrateur de mémoire) n'est plus aucun droit et changele propriétaire de la base
    bien sûr créé toi un autre compte utilisateur de niveau admin qui deviendra le nouveau propriétaire des objets

    Ensuite quand tu lance ta connexion à la base Access, il y a un paramètre pour préciser la base système à utiliser.

    Ce principe est beaucoup plus sur que le simple mot de passe en entrée et empêche l'utilisation du fichier mdb hors de ton application.
    Attention a ne pas paumé l'identifiant de groupe de travail ainsi que le fichier mdw, sinon tu sera verrouillé.

    Pour résumer, pour que la gestion via la base système soit efficace, il faut absolument
    - un identifiant de groupe de travail complexe
    - aucun droit pour l'utilisateur par défaut d'access (administrateur)
    - changer le propriétaire des objets actuel et des nouveaux objets

    Avantage du système:

    Tu peux donner des droits restreints (par exemple: consultation uniquement sur certaines tables et/ou état) quand on utilise la base depuis Access (donc hors application) en diffusant un compte "Invité"

    Contrairement à la gestion par cryptage ou par mot de passe à l'entrée, qui eux raisonne en tout ou rien.

  15. #15
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par RamDevTeam Voir le message
    Autre solution, s'appuyer sur la gestion interne de droit d'access en utilisasant une base système associé à ta base "data"

    Je l'ai pratiqué il y a un certain temps maintenant donc

    Sur access, créer un fichier groupe de travail avec un identifiant complexe à rallonge. Ensuite toujours via access, gérer les droits dans ta base pour que le user par défaut (administrateur de mémoire) n'est plus aucun droit et changele propriétaire de la base
    bien sûr créé toi un autre compte utilisateur de niveau admin qui deviendra le nouveau propriétaire des objets

    Ensuite quand tu lance ta connexion à la base Access, il y a un paramètre pour préciser la base système à utiliser.

    Ce principe est beaucoup plus sur que le simple mot de passe en entrée et empêche l'utilisation du fichier mdb hors de ton application.
    Attention a ne pas paumé l'identifiant de groupe de travail ainsi que le fichier mdw, sinon tu sera verrouillé.

    Pour résumer, pour que la gestion via la base système soit efficace, il faut absolument
    - un identifiant de groupe de travail complexe
    - aucun droit pour l'utilisateur par défaut d'access (administrateur)
    - changer le propriétaire des objets actuel et des nouveaux objets

    Avantage du système:

    Tu peux donner des droits restreints (par exemple: consultation uniquement sur certaines tables et/ou état) quand on utilise la base depuis Access (donc hors application) en diffusant un compte "Invité"

    Contrairement à la gestion par cryptage ou par mot de passe à l'entrée, qui eux raisonne en tout ou rien.
    Salut;

    Très intéressante solution, y'a t-il un tuto sur ça ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  16. #16
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 975
    Points
    83 975
    Billets dans le blog
    15
    Par défaut
    21/02/2009, 07h08
    Just-Soft
    Salut;

    Très intéressante solution, y'a t-il un tuto sur ça ?
    Pour la sécurisation des bases de données Access, merci de faire un tour ici ici
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. Accès à une base de données Access sécurisée par mot de passe
    Par flavors dans le forum Bases de données
    Réponses: 0
    Dernier message: 18/05/2015, 11h35
  2. Réponses: 1
    Dernier message: 04/02/2009, 17h34
  3. comment sécuriser une base de données access ?
    Par ramanov dans le forum Sécurité
    Réponses: 1
    Dernier message: 14/02/2008, 21h28
  4. [ODBC] Sécuriser une base de données Access via une interface en PHP
    Par maraly dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/08/2007, 08h49
  5. Sécuriser une base de donne access
    Par jeha dans le forum Sécurité
    Réponses: 8
    Dernier message: 06/10/2006, 10h28

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