Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Απόκρυψη credentials μέσα στον κώδικα

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2393

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Στον κώδικά μου χρησιμοποιώ στοιχεία πρόσβασης για σύνδεση σε ftp server και postgresql. Με ποιόν τρόπο μπορώ να τα κρύψω ώστε να μην είναι ορατά/διαθέσιμα σε όποιον διαβάσει τον κώδικα;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2394

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Καλησπέρα.

α) Τα γράφεις σε ένα ξεχωριστό αρχείο και τα διαβάζεις από εκεί. Το αρχειό αυτό το έχεις εκτός version control

β) Τα δίνεις ως command line arguments όταν τρέχεις το script

γ) Βάζεις το script να τα ζητάει από το χρήστη (πχ με raw_input() κτλ)

Η λύση που χρησιμοποιείται συνήθως σε production είναι η α). Δες και εδώ docs.python.org/2/library/configparser.h...gparser#ConfigParser
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2395

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Μπερδεύτηκα λίγο
Από την στιγμή που τα διαβάζεις μέσω κώδικα ουσιαστικά μπορεί να τα δει και ο χρήστης. π.χ. στην α) περίπτωση αν έχεις το password σε ένα config file πως μπορεί να λειτουργήσει το πρόγραμμα αν δεν δώσεις και το config file ώστε να πάρεις πχ το password με password=myConfigParser.get("mydata","password")
Το ερώτημα πως η εφαρμογή θα συνδέεται σε μια database χωρίς τα στοιχεία πρόσβασης να είναι προσβάσιμα από τον χρήστη αλλά μόνο από την εφαρμογη.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2396

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Μπερδεύτηκα λίγο
Απαντούσα σε αυτό
Με ποιόν τρόπο μπορώ να τα κρύψω ώστε να μην είναι ορατά/διαθέσιμα σε όποιον διαβάσει τον κώδικα;
Έχοντας τα credentials σε ένα config αρχείο εκτός Version Control, μπορείς να βάλεις τον κώδικά σου στο github χωρίς φόβο.

Δεν είναι δυνατό ο χρήστης να μην γνωρίζει τον κωδικό του. Πως αλλιώς θα συνδέεται;

Νομίζω ότι θα σε βοηθούσε αν σκεφτόσουν την εφαρμογή σου σαν μία ιστοσελίδα (web application). Προκειμένου να χρησιμοποιήσει την εφαρμογή ο χρήστης θα πρέπει να συνδεθεί. Άρα θα πρέπει να γνωρίζει έναν κωδικό. Όμως τα δικαιώματα που έχει αυτός ο χρήστης είναι περιορισμένα.

Πχ σε αυτό το φορουμ. Ο χρήστης Liakos ξέρει τον προσωπικό του κωδικό και όταν συνδέεται με αυτόν, ειναι σε θέση να δημιουργεί καινούρια post/threads. Δεν μπορεί όμως να διαγράψει τα post άλλων χρηστών. Ο χρήστης pmav99 όμως είναι σε θέση να δημιουργεί posts/threads αλλά και να διαγράφει/μετακινεί/επεξεργάζεται posts/threads που έχουν δημιουργήσει άλλοι. Έχει δηλαδή περισσσότερα δικαιώματα από τον Liakos.

Έτσι θα πρέπει να το κάνεις και εσύ. Ο χρήστης της εφαρμογής σου θα συνδέεται με ένα database user που θα έχει μόνο όσα δικαιώματα του χρειάζονται και κανένα παραπάνω.

Πχ Ο χρήστης θα έχει στη βάση μόνο δικαιώματα SELECT, η SELECT και INSERT κτλ. Δεν θα έχει ούτε ALTER ούτε UPDATE ούτε DELETE, ούτε CREATE. Τα δικαιώματα μπορείς να τα κάνεις όσο fine grained χρειάζεται. Μπορείς δηλαδή να του δώσεις συγκεκριμένα δικαιώματα σε συγκεκριμένους πίνακες/στήλες πινάκων.
Τελευταία διόρθωση: 10 Χρόνια 3 Εβδομάδες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2398

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Βασικά αυτό έχω κάνει. έχω δώσει μόνο select δικαιώματα για την postgresql και read only για τον ftp server. Αυτά βέβαια είναι μέσα στον κώδικα. Ο χρήστης δεν χρειάζεται να τα ξέρει γιατί όλα γίνονται μέσω gui.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2399

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Αφού όλα γίνονται μέσω GUI, τότε o τελικός χρήστης δεν ξέρει τίποτα.

Νομίζω ότι δεν περιγράφεις καλά ποιο είναι το πρόβλημα σου.
meta.stackoverflow.com/questions/66377/what-is-the-xy-problem

Πες τι θες να κάνεις (τι τρέχεις, πως το τρέχεις, η βάση είναι local ή remote κτλ), και τι ακριβώς είναι αυτό που σε προβληματίζει σε αυτό που θες να κάνεις. Πχ μήπως το πρόβλημα σου είναι πως θα κάνει distribute ένα GUI που θα συνδέεται σε μια remote βάση;
Τελευταία διόρθωση: 10 Χρόνια 3 Εβδομάδες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2400

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Έχω κάνει μια εφαρμογή με pyqt που συνδέεται σε μια remote database. Πράγματι το ερώτημα είναι αυτό, πως θα κρύψω από τον κώδικα του distributed gui τα στοιχεία πρόσβασης προς την database (και τον ftp server).
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2401

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Η απάντηση είναι ότι δεν μπορείς να τα κρύψεις (τελείως).

Ο χρήστης του GUI πρέπει να γνωρίζει τους κωδικούς για να συνδεθεί. Το ερώτημα που δεν απάντησες όμως είναι «γιατί δεν θες ο χρήστης να γνωρίζει τους κωδικούς;» Που είναι το πρόβλημα σε αυτό; Τι προσπαθείς να πετύχεις μέσω αυτού;

Υπάρχουν τρόποι για να μην είναι εύκολο να δει ο τελικός χρήστης τον κώδικα του προγράμματος (πχ gui2exe, nuitka, cython κτλ) αλλά επειδή οι κωδικοί πρέπει να υπάρχουν κάπου, αν το θέλει πολύ ο χρήστης τότε σίγουρα θα καταφέρει να τους πάρει.

Νομίζω ότι εξακολουθούμε να είμαστε στο XY problem. Τι προσπαθείς να πετύχεις; Αυτό πρέπει να περιγράψεις.

ΥΓ. Ίσως αυτό που έχεις φτιάξει θα λειτουργούσε καλύτερα σαν μία web εφαρμογή. Φυσικά κάλλιστα μπορείς να το κανεις και με το PyQt αλλά το distribution θα είναι σίγουρα πιο εύκολο.
Τελευταία διόρθωση: 10 Χρόνια 3 Εβδομάδες πριν από pmav99.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2402

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Liakos έγραψε:
Έχω κάνει μια εφαρμογή με pyqt που συνδέεται σε μια remote database. Πράγματι το ερώτημα είναι αυτό, πως θα κρύψω από τον κώδικα του distributed gui τα στοιχεία πρόσβασης προς την database (και τον ftp server).


Η εφαρμογή που γράφεις εξυπηρετεί κάποιο σκοπό. Δηλαδή: Αν έχουμε ένα γραφείο όπου π.χ. πέντε χρήστες συνδέονται στην postgresql βάση, ο διαχειριστής δίνει τα απαραίτητα δικαιώματα στον κάθε χρήστη, στην βάση.
Η εφαρμογή απλώς ζητά το username και το password του κάθε χρήστη, ο οποίος είναι υπεύθυνος γι' αυτό.
Άρα ο χρήστης είναι πλέον υπεύθυνος για το συνθηματικό του, την ασφάλεια του και φυσικά για τις ενέργειές του.

Αν, τώρα πρόκειται για web εφαρμογή, ο κάθε καινούργιος χρήστης εγγράφεται και συνδέεται με τα ελάχιστα δικαιώματα.

Επιπλέον ο κώδικας «φυλάσσεται» στον server. Έτσι δεν είναι; ;)

Ο pmav99 τα γράφει μια χαρά.

Πάντως απόλυτη ασφάλεια δεν υπάρχει ποτέ.

EDIT
Υπάρχουν και άλλοι τρόποι σύνδεσης με την postgresql, που ίσως θα ήθελες να εκμεταλευτείς. Διάβασε εδώ.
Γράφω σε Python 3
Τελευταία διόρθωση: 10 Χρόνια 3 Εβδομάδες πριν από kamar. Αιτία: Προσθήκη κειμένου.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2403

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Πρέπει να γίνει με pyqt γιατί πρόκειται για plugin στο QGIS.
Τα δεδομένα θα είναι δημόσια (αλλά μόνο read only) για όλο το κοινό.
Δεν θα έχει διαβάθμιση χρηστών. Απλά έχω κάνει έναν user για τις ανάγκες της εφαρμογής στην postgresql με δικαιώματα μόνο select και στον ftp ένα χρήστη μόνο read only. Ξέρω ότι και να διαβάσει κάποιος τον κώδικα και να βρει τα credentials δεν είναι επικίνδυνο αφού υποτίθεται ότι περιορίζεται μόνο σε SELECT/read only. Απλά ρωτάω αν υπάρχει τρόπος απόκρυψης αυτών.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2404

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Απλά ρωτάω αν υπάρχει τρόπος απόκρυψης αυτών.
Η σωστή ερώτηση είναι αν υπάρχει λόγος να γίνει η απόκρυψη αυτών των στοιχείων. Τι θα κερδίσεις από την απόκρυψη τους; Ασφάλεια; Από τι πράγμα;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2405

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Απ'ότι φαίνεται δεν υπάρχει λόγος αφού τα δικαιώματα είναι περιορισμένα και η ασφάλεια δεν εξαρτάται τελικά από το αν θα έχει κάποιος τα credentials.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2406

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Liakos έγραψε:
Πρέπει να γίνει με pyqt γιατί πρόκειται για plugin στο QGIS.
Τα δεδομένα θα είναι δημόσια (αλλά μόνο read only) για όλο το κοινό.
Δεν θα έχει διαβάθμιση χρηστών. Απλά έχω κάνει έναν user για τις ανάγκες της εφαρμογής στην postgresql με δικαιώματα μόνο select και στον ftp ένα χρήστη μόνο read only. Ξέρω ότι και να διαβάσει κάποιος τον κώδικα και να βρει τα credentials δεν είναι επικίνδυνο αφού υποτίθεται ότι περιορίζεται μόνο σε SELECT/read only. Απλά ρωτάω αν υπάρχει τρόπος απόκρυψης αυτών.

Αν έχεις πρόσβαση στον server της βάσης δεδομένων, ίσως αν έφτιαχνες ή πρόσθετες μια εγγραφή στο .pgpass, για τον συγκεκριμένο χρήστη, δεν θα χρειαζόταν να δημοσιοποιήσεις τον κωδικό πρόσβασης στον κώδικά σου.

http://www.postgresql.org/docs/9.3/static/libpq-pgpass.html
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2407

  • Liakos
  • Το Άβαταρ του/της Liakos
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 21
  • Ληφθείσες Ευχαριστίες 1
Καλό αυτό δεν το ήξερα :)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Απόκρυψη credentials μέσα στον κώδικα 10 Χρόνια 3 Εβδομάδες πριν #2408

  • kamar
  • Το Άβαταρ του/της kamar
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 409
  • Ληφθείσες Ευχαριστίες 88
Liakos έγραψε:
Καλό αυτό δεν το ήξερα :)

Δεν αφορά την python. :laugh:
Γράφω σε Python 3
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.397 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου