![]() |
Ασφάλεια δεδομένων σε ACCESS 2007 Γεια σας. είμαι νέο μέλος στο forum... μπράβο σε όλους για το τόσο όμορφο, χρηστικό και φιλικό site που έχετε δημιουργήσει ...και ευχαριστώ εκ των προτέρων για την βοήθεια. Εχω μια εφαρμογή σε ACCESS 2007 και θα ήθελα να ρωτήσω αν υπάρχει "τρόπος" να μην μπορεί κάποιος ανοίγοντας μια νεα access να κανει εισαγωγή "εξωτερικών δεδομένων" απο την παλιά (δηλ πίνακες, ερωτήματα, κλπ) (οχι με κωδικό κλειδώματος της βάσης...κατι πιο, οσο γίνεται, ασφαλές-πονηρό-έξυπνο) ευχαριστώ :thanks: |
Καλησπέρα Ηλία και καλωσόρισες στο φόρουμ! Από τη στιγμή που ένα αρχείο Access μπορεί να αντιγραφεί στο "φλασάκι" του κάθε χρήστη, οποιαδήποτε μέθοδος και αν εφαρμοστεί δεν εξασφαλίζει την απόλυτη προστασία δεδομένων. Υπάρχουν αρκετά εμπορικά προγράμματα που μπορούν και παρακάμπτουν τους διάφορους τρόπους προστασίας σε *mdb 'η *.accdb. Το ιδανικό θα ήταν οι πίνακες της βάσης να μην ήταν πίνακες Access αλλά πίνακες SQL σε SQL Server (εφαρμόζεται συνήθως σε εταιρίες με εταιρικό δίκτυο και κοστίζει). Αν δεν υπάρχει τέτοια δυνατότητα, μπορεί κανείς σε επίπεδο ασφάλειας των Windows να ορίσει ειδικά δικαιώματα στον φάκελο που περιέχει το αρχείο και να επιτρέπει την πρόσβαση μόνο σε επιλεγμένους χρήστες (το πιο έξυπνο). Τέλος, μπορεί κανείς να ασφαλίσει τα δεδομένα των πινάκων μια βάσης χρησιμοποιώντας τη μέθοδο "Κρυπτογράφηση με κωδικό πρόσβασης" (λιγότερο ασφαλές αλλά ικανοποιητικό αν χρησιμοποιείται από μέσους, μη κακόβουλους χρήστες. Στην τελευταία περίπτωση, για να μην πληκτρολογείται κωδικός κάθε φορά που ανοίγει η εφαρμογή θα πρέπει να γίνουν τα παρακάτω βήματα.
Ελπίζω να σου έδωσα κάποιες ιδέες. Φιλικά Τάσος |
Τάσο σ ευχαριστώ πολύ που διέθεσες το χρόνο σου να μου απαντήσεις. Θα μελετήσω τα όσο μου έγραψες και αν αντιμετωπίσω κάποιο προβλημα θα σε "ξαναενοχλήσω" Με εκτίμηση Ηλιας |
καλησπέρα και πάλι Τάσο έκανα τα βήματα που μου πρότεινες και εχω δημιουργήσει δυο βάσεις 1. την παρασκηνιακή που εχει τους πίνακες κ εχω βάλει κωδικό πρόσβασης 2. την Βάση δεδομένων (Frontend) που έχει ολα τα υπολοιπα αντικείμενα (και τους συνδεδεμένους πίνακες). Πιστεύω οτι όλα τα έκανα σωστά.. δεν μου λείνει όμως το αρχικό πρόβλημα γιατί αφενός μπορεί κάποιος να πειράξει τούς πίνακες στη βάση (Frontend) (χωρίς κωδικό) κ αφ ετέρου αν κάνεις απο την βάση (Frontend) αντιγραφή εναν συνδεδεμένο πίνακα και κατόπιν επικόληση (με επιλογή στην επικόληση πίνακα : "δομή κ δεδομένα (τοπικός πίνακας)"), σε μια καινούργια βαση δεδομένων ... κ (επαναλαμβάνοντας το αντιγρ.-επικόληση για όλα τα αντικείμενα) ξαναφτιάχνω την αρχική βάση απο την οποία ξεκίνησα. Μήπως κάτι δεν έκανα καλά ή κάτι δεν εχω καταλάβει ?? ευχαριστω |
Καλησπέρα Ηλία! Ναι δεν είναι η ιδανική λύση στο πρόβλημα σου για αυτό την τοποθέτησα στο τέλος των μεθόδων που ανέφερα στο προηγούμενο μου μήνυμα. Αν δεν σε εξυπηρετεί θα πρέπει να εξετάσεις τις άλλες 2 περιπτώσεις (SQL Server ή να ορίσεις ειδικά δικαιώματα στον φάκελο που περιέχει το αρχείο). Παραμένω όμως στο θέμα. Η αντιγραφή ενός πίνακα με οποιονδήποτε κλασσικό τρόπο από την BackEnd δεν υφίσταται γιατί θα ζητηθεί από το χρήστη κωδικός πρόσβασης της BackEnd. Το επόμενο σου βήμα είναι να ρυθμίσεις την FrontEnd έτσι που να μην μπορεί κανείς να επεξεργαστεί οτιδήποτε. Θα σου πρότεινα να δεις το παράδειγμα στον παρακάτω σύνδεσμο: http://www.ms-office.gr/forum/access...dedomenon.html . Δοκίμασε και πες μας. Όλα όμως αυτά δεν θα εμποδίζουν κάποιον να αντιγράψει τη βάση σου σε ένα φλασάκι και να την "ανοίξει με την ησυχία του" στο σπίτι του.:wtf: Φιλικά Τάσος |
1 Συνημμένο(α) γεια σε όλους λόγου του ότι η ACCESS από μόνη της δεν παρέχει 100% ασφάλεια κατέληξα στα εξής αφού τελειώσει η εφαρμογή και θέλω με κάποιο τρόπο να την ασφαλίσω (όσο είναι εφικτό) από απλούς χρήστες 1) κρύβω κατ αρχήν τους πίνακες και ότι άλλο απο τα αντικείμενα επιθυμώ πχ( μακροεντολές, φόρμες κλπ)... (δεξί κλικ > ιδιότητες πίνακα > τσεκάρουμε το κρυφό) 2) χρησιμοποιώ τις προτάσεις του Τάσου Κλείδωμα Βάσης δεδομένων "LockDB.mdb" (προστασία αντικειμένων βάσης δεδομένων από επεξεργασία - αποκλείει την προβολή σχεδίασης σε φόρμες) σε συνδυασμό με το "Login_Splash.mdb" (κωδικό για είσοδο στην εφαρμογή σαν διαχειριστής ή σαν χρήστης) ελαφρώς τροποποιημένα και προσαρμοσμένα στην εφαρμογή μου. Αν μπεις σαν διαχειριστής (κωδικός 123456) μπορείς να κλειδώσεις ή να ξεκλειδώσεις τη βάση. Αν μπεις σαν χρήστης (κωδικός 222222) περνάς στην εφαρμογή. Αν η βάση είναι ξεκλείδωτη ανοίγει με shift για επεξεργασία Αν η βάση είναι κλειδωμένη δεν μπορεί να την ανοίξει κάποιος. Αν η βάση είναι κλειδωμένη και ανοίξει κάποιος μια νέα βάση για να τραβήξει τα αντικείμενα σ αυτήν ... αυτά που έχουμε κρύψει δεν θα φαίνονται. Αν την πάρει κάποιος με "φλασάκι" την πάει σε άλλο υπολογιστή και δεν την "τρέξει" .... μπορεί ανοίγοντας μια νέα βάση να τραβήξει τα πάντα (Αχίλλειος πτέρνα) αν όμως την τρέξει έστω κ μια φορά η βάση κλειδώνει στον συγκεκριμένο υπολογιστή. 3) αλλάζω το όνομα της βάσης από test.accdb σε test.accdr (μια επιπλέον "προστασία") και δίνω στον χρήστη αυτό το αρχείο. Τάσο σ ευχαριστώ για τις προτάσεις δείτε τα και .... σχολιάστε σας ευχαριστώ Ηλίας |
Εαν δεν κανω λαθος υπαρχει και η λυση του Volume Serial Number του σκληρου δισκου. Η Βαση ανοιγει μονο στον υπολογιστη που θελεις. Με καποιες μικροτροποποιησεις κανεις δεν μπορει να την ανοιξει ακομα και εαν την εχει παρει με φλασάκι. |
καλημέρα Τόλη Συμφωνώ μαζί σου για τη λύση "Volume Serial Number του σκληρού δίσκου" αλλά πιστεύω ότι δεν καλύπτει την περίπτωση που την πάρει κάποιος με "φλασάκι" και από τον ίδιο ή άλλον υπολογιστή δημιουργήσει μια (νέα) κενή βάση δεδομένων και κάνει λήψη εξωτερικών δεδομένων επιλέγοντας την βάση (Access) που έχει στο φλασάκι. Με αυτό τον τρόπο παίρνει όλα τα δεδομένα ξεκλείδωτα και μπορεί να αλλάξει ότι θέλει, είτε σε πίνακες, είτε σε VB κώδικα, ή οτιδήποτε άλλο……. Όλα αυτά ισχύουν μόνο αν ο χρήστης δεν "τρέξει" τη βάση (test.accdb στο παράδειγμα μας) γιατί όπως έγραψα αν την τρέξει κλειδώνει σε "τοπικό επίπεδο" (φλασάκι, νέος Η/Υ, κλπ.) Αν έχεις κάποιο VB κώδικα που να καλύπτει την περίπτωση αυτή θάθελα πολύ να τον ανεβάσεις στο Forum. φιλικά Ηλίας |
1 Συνημμένο(α) Καλησπέρα! Λάβετε υπόψη σας ότι οποιαδήποτε λύση βασίζεται σε κώδικες μπορεί να παρακαμφθεί αρκεί να απενεργοποιήσει κάποιος τις μακροεντολές της Access και να τρέξει το αρχείο από μία μη αξιόπιστη θέση. Ο ασφαλέστερος τρόπος για να προστατευθούν τα δεδομένα είναι να εφαρμοστεί κρυπτογράφηση με κωδικό και στις δύο βάσεις (BakEnd - FrontEnd). Εφαρμόζοντας τα παραπάνω και σε συνδυασμό με την απόκρυψη των μενού και άλλων στοιχείων από τα οποία θα μπορούσε κανείς να αποκτήσει πρόσβαση στην FrontEnd εξασφαλίζεται η μέγιστη δυνατή ασφάλεια των δεδομένων, πάντα όμως σε επίπεδο Access. Δείτε το συνημμένο παράδειγμα. Κωδικός για είσοδο και στις δύο βάσεις (BakEnd - FrontEnd) = pass Για να εμφανίσετε μενού κλπ. στο FrontEnd πατήστε CTRL + F12, και στο διάλογο που θα ακολουθήσει πληκτρολογήστε τον κωδικό 1234. Επεξεργασία: Το παράδειγμα αφορά τις εκδόσεις Access 2007 - 2010 Φιλικά Τάσος |
γεια σε ολους Τάσο σ ευχαριστώ πολύ για τη βοήθεια είναι η πιο "ασφαλής" λύση (όσο μπορεί νάνε) σε ACCESS, για την προστασία των δεδομένων σε μια βάση ..... Ηλίας Κουρούσης |
Καλημέρα κι από εμένα.. Λιγάκι καθυστερημένη η απάντηση.. αλλά κάλιο αργά παρά ποτέ που λένε! :D :P Επειδή αντιμετώπισα το πρόβλημα του φίλου μας σε εφαρμογή μου για πελάτη, τελικά κατέληξα στην λύση της SQL με .accde αρχείο για τους χρήστες μου. Ποιο συγκεκριμένα, η εφαρμογή είχε 2 σκέλη: α) την ασφάλεια των δεδομένων και β) την ταχύτητα της Access εφαρμογής! Σχετικά με την ασφάλεια δεδομένων, θα σας πω πως θεωρώ τον πιο ασφαλή τρόπο την βάση δεδομένων σε SQL, τα δεδομένα σου είναι σε κάποιον server κοινόχρηστα και με την ασφάλεια που σου προσφέρει ένας Domain Controller σε συνδυασμό με την ασφάλεια της SQL. Εάν δεν υπάρχει κάποιος Server, οκ απλά έχεις τις δικλίδες ασφαλείας της SQL.. Ο λόγος που είναι ασφαλές? α) Σε δίκτυο με Domain Controller έλεγχος από τον Server (Δικαιώματα κλπ) ή τοπικός SQL έλεγχος χρήστη από την SQL. β) FrontEnd περιβάλλον για τον χρήστη, όπως το εξήγησε ποιο πάνω ο Τάσος. (split, reconnect db tables "εδώ κλειδώνει με κωδικό στον SQL ή στον Domain Controller η βάση) γ) Κωδικός πρόσβασης στο αρχείο front end (login_splash απο τον Τάσο) δ) Προστασία του αρχείου για: Shift κατά το άνοιγμα, απο πλήκτρα συντομέυσεων (π.χ. F5, F1, F11, F12 κλπ) ε) Κλείδωμα του αρχείου σε μορφή .accde (για να αποτρέψουμε πιθανές τροποποιήσεις σε φόρμες, εκθέσεις, κώδικα κλπ) στ) Δημιουργία δικού μας Ribbon για την εφαρμογή ζ) Επιβεβαίωση χρήστη με χρήση του CPU_ID (καλό είναι για τον Super_User να παρακαμφθεί αυτό το βήμα) καθώς επίσης και επιβεβαίωση για την ύπαρξη του αρχείου στον δίσκο Πολύ πιθανό, κάπου να υπάρχει κάποια "τρύπα" στα παραπάνω, αλλά ποτέ και τπτ δεν είναι ασφαλές.. Για την δική σου περίπτωση όμως, πιστεύω πως είναι οκ, γιατί: α- και να αντιγράψει κάποιος το αρχείο της Access σε φλασάκι, ούτε καν να το ανοίξει δεν θα μπορεί β- ακόμα και backup των δεδομένων (με κάποιο μαγικό τρόπο) να μπορέσει να πάρει, θα πρέπει να στήσει SQL Server, να περάσει πάνω το Backup, να παρακάμψει το CPU_ID (που δεν ξέρει καν πως υπάρχει ως έλεγχος μέσα στην εφαρμογή, μπορείς να αποθηκεύσεις το cpu_id.dll όπου κι αν θέλεις στον δίσκο σου.. ) ή να βρει για ποιον χρήστη δεν λειτουργεί το κλείδωμα του cpu_id εάν φυσικά έχει αποθηκεύσει σωστά το αρχείο στον δίσκο του. Όλα τα παραπάνω φυσικά, εάν έχει στα χέρια του ένα bakup των δεδομένων και ξαναστήσει απο την αρχή το frontent είναι άχρηστα.. Όπως ξαναείπα, τίποτα δεν είναι απόλυτα ασφαλές. Φιλικά, Άγγελος |
Παράθεση:
|
Καλησπέρα Στο κώδικα που ακολουθεί,... Κώδικας: Private Sub klidoma()Την πρώτη φορά ο πίνακας θα συμπληρωθεί με τον σειριακό αριθμό του σκληρού σου δίσκου και κάθε επόμενη φορά θα διαβάζει τον αποθηκευμένο αριθμό, συγκρίνοντάς τον με αυτόν του υπολογιστή στο οποίο καλείται να "τρέξει". ΠΡΟΣΟΧΗ : Κράτα αντίγραφο ...μη μείνεις απέξω. Με εκτίμηση / Νίκος |
Σε ευχαριστώ Νίκο, πολύ χρήσιμο. |
1 Συνημμένο(α) Νίκο τα έκανα αυτά που είπες αλλά μου βγάζει σφάλμα.Δεν ξέρω τι μπορεί να κάνω λάθος. Δημιούργησα τον πίνακα με τα πεδία όπως καθορίζει η ρουτίνα την οποία καλώ από την πρώτη φόρμα που ανοίγει ("με τη φόρτωση"), μου βγάζει όμως compile error όπως θα δεις στο συνημμένο αρχείο. |
Καλημέρα Στον Editor : Tools ... References ... ενεργοποίησε το microsoft scripting Runtime. με εκτίμηση / Νίκος |
Νίκο το έκανα αλλά πάλι δεν δουλεύει. ΟΛΑ ΚΑΛΑ ΤΟ ΕΦΤΙΑΞΑ.:wall: |
...Μάλλον ξέχασες να πατήσεις ΟΚ ! |
Άρα συμπέρασμα ΔΕΝ μπορούμε να έχουμε ασφάλεια με ACCESS Για να αυξήσουμε τη δυσκολία οι πίνακες να μην υπάρχουν καν ουτε συνδεδεμένοι...αλλά να τρέχουν με κώδικα σε κάθε περίπτωση. Δηλαδή φτιάχνουμε μια VB εφαρμογή καθαρή και οι πίνακες σε server SQL και κωδικοιποιμένοι. |
Παράθεση:
Σε περίπτωση που "κρασάρει" ο Η/Υ και χρειασθεί εκ νέου format τι γίνεται;Χάνονται τα πάντα ή μπορούμε να κάνουμε κάτι; |
Σκέφτομαι το εξής: Με το που στήνω την εφαρμογή κρατάω το volume serial number του Η/Υ. Αν χαλάσει και γίνει format με κάποιο πρόγραμμα για αλλαγή του volume serial number ξαναπερνάω το παλιό serial.Είναι εφικτό; |
| Η ώρα είναι 15:35. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.