user administration panel security

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

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

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

user administration panel security

Δημοσίευση από cherouvim » 16 Αύγ 2005 23:39

Ας υποθέσουμε λοιπόν ότι φτιάξαμε το administration panel μας για τους admins του συστήματός μας.

Ο user έχει ID, user, pass, level.
Level>10 σημαίνει admin. Μπορεί να σβήσει/προσθέσει/επεξεργαστεί users/admins που έχουν μικρότερο level από αυτόν.

Πάει λοιπόν ο smart user και αφού έχει log-άρει κανονικά ως admin level 15 θέλει να σβήσει τον χρήση με ID 66 ας πούμε που έχει level 20. Πατάει λοιπόν να κάνει edit έναν οποιονδήποτε χρήστη με level μικρότερο. Γράφει ένα πρόχειρο javascript που το φορτώνει στο greasemonkey και πριν φύγει το POST για τον server αλλάζει το hidden ID πεδίο σε 66.
Αποτέλεσμα ο χρήστης με ID 66 διαγράφεται ή αλλάζουν τα δεδομένα του, κάτι το οποίο δεν επιτρέπετε.

Πως θα το λύνατε το πρόβλημα;
Αυτή τη στιγμή ελέγχω κατά το submission εάν το original level του χρήστη προς επεξεργασία είναι μικρότερο του τρέχοντος χρήστη. Αλλά σε γενικότερο πλαίσιο... πως θα διασφάλιζα ότι ο χρήστης προς editing που έστειλα στο HTML form είναι ο ίδιος με αυτόν που λαμβάνω στο POST method;

Να κρατήσω κάπιο transaction ID (random number) σε ενα temp mysql table συσχετισμένο με τον χρήστη και να το feed-άρω στο HTML form που θα επιστρέψει πίσω κατά το POST και να συγκρίνω; Ή παίζει και πιό σωστή λύση;

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

user administration panel security

Δημοσίευση από cordis » 16 Αύγ 2005 23:51

μπορείς να κάνεις αυτό που λες αλλά με το session id που σου δίνει η php..
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

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

user administration panel security

Δημοσίευση από cherouvim » 17 Αύγ 2005 07:30

cordis, μάλλον δεν το περιέγραψα σωστά. Δεν έχω πρόβλημα με session impersonation, αλλά με τον ίδιο τον admin να προσπαθήσει να αλλάξει το hidden ID field του user editing form, έτσι ώστε να εφαρμόσει αλλαγές σε κάποιον user που δεν του επιτρέπεται.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27617
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

user administration panel security

Δημοσίευση από cordis » 17 Αύγ 2005 11:21

ναι βρε συ.. :P
εγώ είπα να κάνεις αυτό
cherouvim έγραψε:Να κρατήσω κάπιο transaction ID (random number) σε ενα temp mysql table συσχετισμένο με τον χρήστη και να το feed-άρω στο HTML form που θα επιστρέψει πίσω κατά το POST και να συγκρίνω; Ή παίζει και πιό σωστή λύση;
αλλά με session id... και από εκεί και πέρα τσεκάρεις ;)

ακόμα μπορείς να έχεις κάνει cache όλα τα user data σε έναν πίνακα μαζί με τα auth που έχει και κάθε φορά να τα συγκρίνεις για να δεις και τι θα του εμφανίσεις, αλλά και να ελέγχεις πριν κάνει αλλαγές.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

user administration panel security

Δημοσίευση από Rapid-eraser » 17 Αύγ 2005 21:31

H logiki eivai aplousteri...
Alla prota va para8eso mia apli me8odo login :)

Lipov 8eto eva aplo sistimataki poli proxira gia to pos exo lisei egw afto to problima.

Tnv diadikasia tnv exo spasei se dio meri. to login kai to authentication.

To login givete mia fora apo tis kataliles formes
kai to authentication givete gia ka8e php arxeio pou 8eloume va eivai klidomevo.

8eoroume lipov ka8e xristi avasfali kai zitame eva combination username kai password.
8a epalel8w se afto.

Login diadikasia. apo tnv forma tou login tsimpame to username kai to password pervame apo sha1 to password kai to username kai bazoume kai eva salt + kapoio timestamp.
To bazomoume olo afto tov axtarma se eva cookie / session oti goustaroume.
Stnv sivexeia ola ta arxeia ftavouv sto simio pou zitave tnv metabliti afti av iparxei mpevouv stnv diadikasia tou authentication allios apagorebouv tnv prosbasi.

H diadikasia tou authentication tsekarei to timestamp av eivai valid px mikrotero apo mia ora apo tora ...
Kai elegxoume me ta stixia tis basis gia eva logariasmo pou va dimiourgei to idio hash me afto pou exoume apo8ikefsei. (dev 8a mpw stnv avalisi tou query exei va kavei ka8ara me sql kai mporei va givei tragika aplo.)

Twra apo tnv db mporoume va tsimpisoume kapoio level.
(egw sivi8izova divo kai dikeometa per level per catigoria se eva deftero pivaka.)

Twra ka8e fora pou 8a trexei to script 8a givete aftos o elegxos kai 8a dimiourgite mia metabliti pou periexei to level tou xristi.

Profavos me afti tnv diadikasia mporeis va elenkseis av exei kapoios va kavei edit otidipote kai av eksarxis
exei dikeoma prosbasis se afti tnv katigoria.

Sivi8os epilego otav kapoios eivai modatrator va miv mporei va kavei edit eggrafi tritou oute delete.

Evo av eivai admin profavos exei access pavtou. :)

Avaloga twra me to poso 8eloume va to trabiksoume to 8ema mporoume va dimiourgisoume groups xristwv
kai va mporouv va kavouv edit metaksi tous oi mods.

Safestata ola afta exouv va kavouve stnv sosti domi twv script mas kai sto sosto filtrarisma twv input pou mas divei o xristis.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Απάντηση

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

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

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