ze5400 Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 (endret) Holder på å lære meg php, og da må jeg selvfølgelig få dreis på POST; kan noen se hva som er galt her?: <?php if ($username != null) { echo "Jaaaa"; }else{ ?> <html> <head> <title>Ungedesignere :: Login</title> </head> <body> <form method="POST" action="admin.php" <input type="textbox" value="" name="username"><br /> <input type="submit" value="Logg Inn"> </form> </body> </html> <? } ?> Takk på forhånd Endret 30. oktober 2006 av ze5400 Lenke til kommentar
Peter Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 if(!empty($_POST['username'] )) echo "hei :".$_POST['username']; Lenke til kommentar
nomore Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Når du sender skjemadata til php skal disse hentes ut via $_POST[navn] for å gjøre det korrekt. Du kan noen steder(servere) hente det direkte via $navn, men er en dårlig måte, og en stor sikkerhetsrisiko. Derfor har flere servere slått det av. For å hente ut i fra adressen bruker du i stede $_GET[navn]. Lenke til kommentar
PHPdude Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Register globals er ingen direkte sikkerhetsrisiko, det er kun vis man som utvikler ikke er obs på det, men hele register globals greia er noe drit og den vil være helt fjernet i neste PHP-versjon. Bruk $_POST, $_GET, $_REQUEST, $_COOKIE og $_SESSION Personelig ville jeg ha skrevet koden over sånn: $username = (isset($_POST['username']) && is_string($_POST['username'])) ? $_POST['username'] : false; if($username) echo "Hei " . $username; Særlig vis man skal benytte seg av variablen på flere steder i scriptet er dette praktisk. Da har man en "trygg" variabel man kan bruke til det meste. Lenke til kommentar
Peter Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Alle POST-variable som ikke er binære er såvidt jeg husker strenger, så det er kanskje litt unødvendig å sjekke for det? Lenke til kommentar
Ernie Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 (endret) Register globals er ingen direkte sikkerhetsrisiko, det er kun vis man som utvikler ikke er obs på det, men hele register globals greia er noe drit og den vil være helt fjernet i neste PHP-versjon.Bruk $_POST, $_GET, $_REQUEST, $_COOKIE og $_SESSION 7175246[/snapback] Register globals er noe ordentlig drit man aldri i verden skal bruke. Å påstå det ikke er en sikkerhetssrisiko så lenge utvikler er obs blir naivt. Jeg er selv svært obs på farene rundt det, men har alikevel opplevd at det er sneket seg inn en svært alvorlig feil i koden nettopp pga. register_globals. Problemet er at man ikke klarer å tenke på alle konsekvenser ved kodingen. Personelig ville jeg ha skrevet koden over sånn: $username = (isset($_POST['username']) && is_string($_POST['username'])) ? $_POST['username'] : false; if($username) echo "Hei " . $username; Særlig vis man skal benytte seg av variablen på flere steder i scriptet er dette praktisk. Da har man en "trygg" variabel man kan bruke til det meste. 7175246[/snapback] Greit nok det, men hvorfor i alle dager bruker du is_string? Den vil jo alltid være det Endret 29. oktober 2006 av Ernie Lenke til kommentar
PHPdude Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Det vil den ikke nei!! Her ser man en av feilene utviklere gjør. sendes et felt med navn som field[] så vil PHP gjøre det om til en array! f.eks <input name="field[name]"> <input name="field[password]" I PHP scriptet vil da $_POST['field'] være en assoc array som inneholder 'name' og 'password' Lenke til kommentar
Peter Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Det er faktisk et godt poeng, dvs. du vet jo hvilke felt du har laget på siden, men ufine folk kan jo sende andre elementer dersom browseren lar dem manipulere POST-data. Lenke til kommentar
Ernie Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 Det vil den ikke nei!!Her ser man en av feilene utviklere gjør. sendes et felt med navn som field[] så vil PHP gjøre det om til en array! f.eks <input name="field[name]"> <input name="field[password]" I PHP scriptet vil da $_POST['field'] være en assoc array som inneholder 'name' og 'password' 7177649[/snapback] ... og hvordan i alle dager skal det være mulig å utnytte det? Bruker man en array som en string vil det jo stå array der i stedet for noe fornuftig Lenke til kommentar
PHPdude Skrevet 29. oktober 2006 Del Skrevet 29. oktober 2006 ALDRI ta noe for god fisk når det gjelder sikkerhet! Det enkleste eksempelet er at PHP fort vil spytte ut en feilmelding vis man prøver å håndtere en array som en string (eller omvendt for den saks skyld).Og en feilmelding kan fort inneholde mye snacks for en hacker. Så kan du tenke på alle de funksjonen som vil oppføre seg annerledens vis de får en array istedenfor en string, som fort får fatale følger. Når man henter en variabel fra en bruker skal man ta ALLE forhåndsregler! Lenke til kommentar
ze5400 Skrevet 30. oktober 2006 Forfatter Del Skrevet 30. oktober 2006 Tusen takk for gode forklaringer alle sammen Var ikke akkurat noe problem lengre nå Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå