Citat:
Ursprungligen postat av orreborre
Citat:
Ursprungligen postat av zoran
Exempel: Om jag, för att markera att en användare är inloggad sätter $_SESSION['loggedin'] = "true"; med register_globals off, så kan inte "surfaren" komma åt den variabeln för att sätta den och gå förbi authenticeringen.
Använder jag register_globals och inte använder $_SESSION[''], och varje $_POST['foo'] eller $_GET['foo'] blir istället $foo automatiskt, så kan användaren göra helt enkelt http://www.example.com/mittscript.php?loggedin=true för att sätta min autenticeringsvariabel.
/Zoran
|
Jag säger inte emot dig, jag håller med om att globals ska vara off, men riktigt så enkelt är det inte för användarna.
Hur ska en användare veta att det är just variabeln "loggedin" som ska sättas till true?
Vad jag menar är att sessionvaribaler är gömda och att man inte kan få reda på variabelnamnen utan måste gissa, så vitt jag vet i alla fall.
|
Nja, om din ända säkerhet är att räkna med att användaren "inte" ska gissa sig till ditt variabelnamn så handlar det om "security by obscurity", vilket är i princip det sämsta möjliga sätt att skydda sig. Då tvingas du att använda variabelnamn som inte är lättgissade, vilket försvårar ditt jobb också.
Ett annat problem är att du aldrig kan släppa det systemet "publikt", eftersom "folket" kan då se vilka variabler du använder och kan på så sätt attackera alla de som använder ditt system.
Personligen tycker jag att det är KNÖLIGARE att skriva php-kod med register globals. Man kan inte klart urskilja POST från GET-variabler.
/Zoran