12. marts 2005 - 20:57Der er
3 kommentarer og 1 løsning
Mere en debat end et spørgsmål - global_register
Hej alle eksperter
Jeg ved godt det er meningen at man skal svare på spørgsmål herinde, men jeg vil enlig gerne lige starte en lille debat om global_registrer. Hvad gør global_register og hvorfor er der nogen der ikke har det, og andre der har det på?
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
$hej istedet for $_POST['hej'] , så kunne jeg i princippet bare skrive ?hej=meddig , som i realiteten svarer til $_GET['hej']
Folk som har global_register on, er folk som ikke kender til det, eller ikke tænker for meget over sikkerheden.
I PHP er global_register nemlig ON som standard (underligt nok) og derfor slår de fleste det ikke fra.
Synes godt om
Slettet bruger
12. marts 2005 - 21:15#2
Nu ved jeg ikke hvor meget erfaring du har med PHP, men forestil dig følgene lille script som er "modtageren" af en login form:
<?php if ($password == "secret" && $username == "maabjerg") { $loggedin = TRUE; } if ($loggedin) { echo "Du er nu logget ind"; } else { echo "Forkert user / pass!"; } ?>
Hvis du nu kalde scriptet med login.php?loggedin=1 ville du lige pludselig være logget ind! Ikke så heldigt. Denne type sikkerhedsbrud kan kun laves på 'dårlig kode'. Som der for øvrigt findes rigtig meget af!
Hvis man skulle lave overstående eksempel mere sikkert kunne man gøre det sådan: <?php $loggedin = FALSE; if ($_POST['password']== "secret" && $_POST['username'] == "maabjerg") { $loggedin = TRUE; } if ($loggedin === TRUE) { echo "Du er nu logget ind"; } else { echo "Forkert user / pass!"; } ?>
En anden ting som gøre "off" mere atractivt er at man har fuldt ud styr på hvorfra man får sine variabler! Hvis du skal have fat i en variabel posted fra en form med method="post", ved du at du skal kigge i $_POST['field']..
Hvis nu hiver noget 'gammlet' kode frem som du ikke har kigget på i et stykke tid og ser at der et sted står fx. echo $username;
Kan du ikke ane om den udskriver - det brugernavn som lige er logged ind (På login.php), $_POST['username'] - det brugernavn som ER logged ind (På anypage.php), $_SESSION['username'] - det brugernavn som man gerne vil se info om på userdetails.php, $_GET['username'] - osv, osv..
Lige en rettelse til alister_crowley: reg glob er default Off fra PHP 4.2.0
Der er selvfølgelig også det problem at når de bliver smidt ud i det globale variabel scope, overskriver de hinanden. Jeg kan ikke lige huske rækkefølgen, men hvis du nu både har en cookie, en session variabel, en environment variabel og en get-variabel som hedder det samme vil du kun kunne få fat i en af dem.
Når man skriver kode beregnet til reg_glob = Off er man også sikker på at det virker på alle servere.
Med reg_glob = on kan man finde variablerne BÅDE i det globale scope OG i de superglobale arrays. ($_POST, $_COOKIE osv.) Med reg_glob = Off kan man KUN finde dem i de superglobale.
Så man har altså 'fremtidssikret' sin kode.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.