Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Σύνδεση σε SQL Server με ασφαλή τρόπο

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος Antonios Chatzipavlis στις 20-08-2018, 15:00. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-08-2018, 16:39 78296

    Σύνδεση σε SQL Server με ασφαλή τρόπο

    Καλησπέρα,

     

    Γράφω ένα Windows Forms VB.NET application όπου παίρνει και δίνει πληροφορία σε ένα SQL Server Database.

    Το πρόγραμμα λειτουργεί τέλεια και όλα όσα ήθελα να κάνει, τα κάνει ήδη. Οπότε έφτασα στο σημείο που δεν έχω ασχοληθεί ποτέ στο παρελθόν. Την Ασφάλεια.

     

    Θεωρούμε ότι υπάρχει ένας Admin που έχει πλήρη έλεγχο στην βάση δεδομένων και μετά υπάρχουν διάφοροι άνθρωποι που έχουν περιορισμούς στο τι μπορούν να κάνουν edit ή view.

    Υπάρχουν 2 πράγματα τώρα:

    * SQL Server "Users"

    * "Accounts" στο πρόγραμμα

    Τα accounts μπορούν να παίρνουν πληροφορίες για το τι είδος είναι από ένα table στη βάση δεδομένων (π.χ. αν στο row του account name του χρήστη, το column "GBM", που λειτουργεί σαν flag, είναι TRUE, τότε στο πρόγραμμα έχει δικαιώματα GBM)

    Σκέφτηκα επίσης ότι για log in στο πρόγραμμα θα πρέπει να πατάνε το Username τους και ένα password, και στη βάση δεδομένων για ασφάλεια θα είναι αποθηκευμένο ένα SHA3 hash με salt που μπορεί να είναι ένας τυχαίος αριθμός για τον κάθε χρήστη αποθηκευμένο στο sql server row του. Οπότε το πρόγραμμα (όντας ήδη συνδεδεμένο στη βάση) θα παίρνει το password που πληκτρολογήθηκε, θα διαβάζει το salt από τη βάση, θα παράγει το SHA3 και θα το συγκρίνει με το SHA3 στη βάση.

     

    Ερώτηση 1: Στην βάση δεδομένων, πώς είναι καλό να συνδέεται ο κάθε χρήστης?

    * Διαφορετικό SQL User για κάθε χρήστη και ρύθμιση δικαιωμάτων ανάγνωσης/edit;

    * 1 SQL User για κάθε ομάδα χρήστη που μοιράζεται ίδια δικαιώματα;

    * 1 global SQL User για όλους με πλήρη δικαιόματα και απλώς το πρόγραμμα θα επιτρέπει/αποτρέπει τον καθένα από το να γράψει/δει εκεί που δεν πρέπει;

     

    Ερώτηση 2: 

    * Το User ID και Password για τον SQL Server που θα είναι γραμμένα στο πρόγραμμα;

    Αν είναι σε αρχείο, μπορεί να το δει κάποιος και να συνδεθεί απευθείας στον SQL Server. Δεν το θέλουμε αυτό. 

    Αν είναι σε μεταβλητή ή hardcoded, αν κάποιος κάνει reverse engineer, δεν μπορεί πάλι να το βρει και να πάρει έλεγχο του SQL Server?

    *Ποιος είναι ο προτεινόμενος τρόπος;

     

    Ευχαριστώ πραγματικά για οποιαδήποτε ιδέα :)


    Δημοσίευση στην κατηγορία: , , ,
  •  20-08-2018, 15:00 78300 σε απάντηση της 78296

    Απ: Σύνδεση σε SQL Server με ασφαλή τρόπο

    Ο SQL Server έχει εξαιρετικό security και δεν χρειάζεται να κάνεις κάτι δικό σου.

    Εφόσον είναι μια desktop εφαρμογή όπως κατάλαβα (αν κατάλαβα σωστά) και εφόσον αυτή είναι σε domain τότε θα σου έλεγα να χρησιμοποιήσεις domain accounts που έτσι και αλλιώς ο κάθε χρήστης έχει για να κάνει login στο domain.

    Για να απλοποιήσεις την δουλειά σου φτιάξε domain groups ανάλογα με τα roles που θέλεις και αυτά να μπούν στον SQL Server με τα ανάλογα δικαιώματα.

    Αν δεν είσαι σε domain καλό είναι να δεις το application role feature που έχει ο SQL Server.

    Έχω μια παρουσίαση στο SQLschool.gr http://sqlschool.gr/SqlNight/4/Content.aspx είναι παλιά αλλά η ουσία παραμένει η ίδια


    Antonios Chatzipavlis

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems