Ένα απλό cms

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

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

alexsoft

Ένα απλό cms

Δημοσίευση από alexsoft » 12 Μαρ 2008 19:04

Μπράβο vassilism.

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από vassilism » 12 Μαρ 2008 21:06

cherouvim έγραψε:Το alert που έβαλα είναι αθώο, αλλά το οτι με αφήνεις να το κάνω είναι πολύ επικίνδυνο.

Διάβασε εδώ: http://en.wikipedia.org/wiki/Cross-site_scripting
Όντως είναι πολύ επικίνδυνο :think:
Βασικά αυτό το cms το έχω φτιάξει για έναν χρήστη, δηλαδή να το χειρίζεται κάποιος σαν admin ενός site.
Είναι απαραίτητο να κάνω escape ή sanitize το user input?

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

Ένα απλό cms

Δημοσίευση από cherouvim » 12 Μαρ 2008 21:25

vassilism έγραψε:Είναι απαραίτητο να κάνω escape ή sanitize το user input?
Είναι πάντα απαραίτητο.

1) Μπορεί τώρα να το παίζει ένας χρήστης αλλά κάποτε μπορεί να το ανοίξεις για πολλούς.
2) Μπορεί να επαναχρησημοποιήσεις κώδικα από κει μέσα σε άλλο project.
3) Μπορεί κάποιος τρίτος απέξω (που τυχαίνει να γνωρίζει τα URLs και τα forms της εφαρμογής) να πλασάρει ένα προσεκτικά κατασκευασμένο URL το οποίο ο admin θα πατήσει. Του τύπου:

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

http://www.lernijuices.com/admin/login.php?username=foo&password=';drop from users where '1'='1&button2.x=0&button2.y=0&formvalues=null
Οι δυνατότητες είναι άπειρες.
Μία απλή λύση είναι:
1) mysql escape οτιδήποτε μπαίνει από user input μέσα σε sql query
2) html escape οτιδήποτε μπαίνει από user input ή τη βάση στο html template σου

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από Basilakis » 12 Μαρ 2008 22:25

How to Prevernt MySQL injection:

http://www.freestuff.gr/forums/viewtopi ... c&start=30

Good reading ;)

Άβαταρ μέλους
papatzas
Δημοσιεύσεις: 227
Εγγραφή: 03 Δεκ 2005 14:23

Ένα απλό cms

Δημοσίευση από papatzas » 12 Μαρ 2008 23:36

φίλε καλή φάση , μπράβο
:-)

Άβαταρ μέλους
theminio
Δημοσιεύσεις: 150
Εγγραφή: 20 Ιουν 2006 20:26

Ένα απλό cms

Δημοσίευση από theminio » 13 Μαρ 2008 12:47

Πολύ ωραία προσπάθεια, καλή συνέχεια!

nect
Δημοσιεύσεις: 55
Εγγραφή: 17 Δεκ 2005 21:21

Ένα απλό cms

Δημοσίευση από nect » 14 Μαρ 2008 22:24

Μπράβο καλή συνέχεια! :P

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από vassilism » 17 Μαρ 2008 22:41

Σας ευχαριστώ πολύ παιδιά :D
Έκανα κάποιες διορθώσεις.
Αν θέλετε κάντε καμιά "επίθεση" να το τεστάρετε από θέμα ασφάλειας.

http://www.lernijuices.com/admin

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

Ένα απλό cms

Δημοσίευση από cherouvim » 17 Μαρ 2008 22:53

Με άφησε να βάλω για currency τη τιμή 'z'.
Κάνε έλεγχο αυτό που σου έρχεται σαν τιμή, εάν βρίσκεται στις έγκυρες τιμές (αυτές που εκτυπώνεις στο drop down).

Με άφησε να σου σπάσω το HTML με τίτλο εγγράφου:

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

lol"><iframe src=
Κάνε HTML escape το user input.

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

& = &amp;
" = &quot;
και τα λοιπά.
Τελευταία επεξεργασία από το μέλος cherouvim την 17 Μαρ 2008 22:56, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
AAT
Δημοσιεύσεις: 379
Εγγραφή: 23 Αύγ 2007 16:31
Τοποθεσία: Lemesos, Limassol
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από AAT » 17 Μαρ 2008 22:55

me afto apotrepeis tis pio polles epitheseis:

http://www.php.net/mysql_real_escape_string

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από vassilism » 17 Μαρ 2008 23:48

AAT έγραψε:me afto apotrepeis tis pio polles epitheseis:

http://www.php.net/mysql_real_escape_string
Tην mysql_real_escape_string την χρησιμοποιώ ήδη στις μεταβλητές που κάνω post.


Φίλε cherouvim εκτιμώ πολύ τις συμβουλές σου.
cherouvim έγραψε:Με άφησε να βάλω για currency τη τιμή 'z'.
Πως κατάφερες και άλλαξες την τιμή? Αφού επιλέγεις από λίστα και δεν μπορείς να γράψεις :o
cherouvim έγραψε: Με άφησε να σου σπάσω το HTML με τίτλο εγγράφου:

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

lol"><iframe src=
Κάνε HTML escape το user input.

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

& = &amp;
" = &quot;
και τα λοιπά.
Σε αυτό το σημείο δεν κατάλαβα καθόλου τι έκανες!
Βλέπω στην εγγραφή με τίτλο lol"lol να λείπει τι link για edit και να βγάζει iframes.

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

Ένα απλό cms

Δημοσίευση από cherouvim » 18 Μαρ 2008 00:01

vassilism έγραψε:Πως κατάφερες και άλλαξες την τιμή? Αφού επιλέγεις από λίστα και δεν μπορείς να γράψεις :o
Ότι στέλνεις στο χρήστη μπορεί να το αλλάξει εύκολα. Μερικοί τρόποι είναι:
1) http://www.google.com/search?q=web+developer+toolbar
2) http://www.google.com/search?q=mozilla+poster
3) http://www.google.com/search?q=greasemonkey
4) save as τη σελίδα σου locally, πείραγμα με notepad και submit φόρμας

Ο απλός χρήστης δεν θα το κάνει ποτέ, αλλά αυτό δεν έχει καμία σημασία αν θες να γράφεις robust web applications.
vassilism έγραψε:Σε αυτό το σημείο δεν κατάλαβα καθόλου τι έκανες!
Βλέπω στην εγγραφή με τίτλο lol"lol να λείπει τι link για edit και να βγάζει iframes.
Έβαλα τον εξής τίτλο σε ένα νέο έγγραφο:

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

a"><iframe src=http&#58;//sex.com />

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

Ένα απλό cms

Δημοσίευση από vassilism » 18 Μαρ 2008 00:43

cherouvim έγραψε: Κάνε HTML escape το user input.

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

& = &amp;
" = &quot;
και τα λοιπά.
Βασικά δεν ξέρω πώς να κάνω HTML escape.
Μήπως να γράψω ένα javascript να μην επιτρέπει στον χρήστη να εισάγει κάποιους χαρακτήρες, όπως:
<>
Βρήκα μια λίστα HTML Escape Characters.
http://www.breakingpar.com/bkp/home.nsf ... 47007456E7

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

Ένα απλό cms

Δημοσίευση από skeftomilos » 18 Μαρ 2008 01:43

Τι; Δεν ξέρεις πώς γίνεται το html escape; :-)

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

Ένα απλό cms

Δημοσίευση από cherouvim » 18 Μαρ 2008 08:14

vassilism έγραψε:Μήπως να γράψω ένα javascript να μην επιτρέπει στον χρήστη να εισάγει κάποιους χαρακτήρες
Το να το κάνεις αυτό στον client είναι πάλι ο λάθος τρόπος αντιμετώπισης. Ο client μπορεί να κάνει ότι θέλει με το js σου, και να στείλει στο server ότι αποφασίσει.
Τέτοια προβλήματα λύνονται στο server.

Απάντηση

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

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

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