sjotto Skrevet 22. mars 2008 Del Skrevet 22. mars 2008 Hallo folkens Jeg sitter her nå og fikser meg en god gjestebok til siden min og har fått til gjesteboka så den printer ut resultat og alt det der. Men når det gjelder sikkerheten så er det dårlig også med feltene som skal fylles ut. Sikkerheten: Jeg skulle ha fått gjort sånn at brukerene ikke kan bruke html eller sql injeksjoner. Feltene: Skulle ha fått gjort slik at feltene som skal fylles ut, ikke skal være tomme når en bruker skriver sin melding. At det kommer en feilmelding hvis han ikke fyller ut alle. Her er koden til den siden der feltene skal fylles ut: <body> <table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> <tr> <td><strong>Skriv i Gjesteboka </strong></td> </tr> </table> <table border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC" style="width: 532px"> <tr> <form id="form1" name="form1" method="post" action="skrivgjestebok.php"> <td> <table border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF" style="width: 526px"> <tr> <td style="width: 222px">Ditt Navn</td> <td width="14">:</td> <td width="357"><input name="navn" type="text" id="name" size="40" /></td> </tr> <tr> <td style="width: 222px">E-Post Addresse</td> <td>:</td> <td><input name="epost" type="text" id="email" size="40" /></td> </tr> <tr> <td valign="top" style="width: 222px">Din Kommentar</td> <td valign="top">:</td> <td><textarea name="kommentar" cols="40" rows="3" id="comment"></textarea></td> </tr> <tr> <td style="width: 222px"> </td> <td> </td> <td><input type="submit" name="Submit" value="Skriv i Gjesteboka" /> <input type="reset" name="Submit2" value="Nullstill" /></td> </tr> </table> </td> </form> </tr> </table> <table width="400" border="0" align="center" cellpadding="3" cellspacing="0"> <tr> <td><a href="index.php">Vis Gjestebok</a></td> </tr> </table> </body> Dette er koden til den siden der scriptet står: $datetime=date("y-m-d h:i:s"); //date time $sql="INSERT INTO $tbl_name(navn, epost, kommentar, dato)VALUES('$navn', '$epost', '$kommentar', '$dato')"; $result=mysql_query($sql); //check if query successful if($result){ echo "Du har nå skrevet din kommentar"; echo "<BR>"; echo "<a href='index.php'>Vis Gjestebok</a>"; // link to view guestbook page } else { echo "Det har oppstått en feil"; } mysql_close(); ?> <?php include("fot.php"); ?> Kan noen hjelpe meg og forbedre scriptene! Vil bli evig takk nemlig! Beklager skrivefeil! Lenke til kommentar
Ballmenace Skrevet 22. mars 2008 Del Skrevet 22. mars 2008 Sikkerheten: Jeg skulle ha fått gjort sånn at brukerene ikke kan bruke html eller sql injeksjoner. Du kan ta en titt på denne funksjonen: strip_tags Feltene: Skulle ha fått gjort slik at feltene som skal fylles ut, ikke skal være tomme når en bruker skriver sin melding. At det kommer en feilmelding hvis han ikke fyller ut alle. Du kan gjøre en rekke sjekker på hver enkelt felt for å sjekke om inndataen er tom. if(empty($_POST['felt'])){ // return error } Lenke til kommentar
LordjOX Skrevet 22. mars 2008 Del Skrevet 22. mars 2008 (endret) For å hjelpe mot SQL injeksjoner i feltene dine: mysql_real_escape_string() http://no.php.net/manual/en/function.mysql...cape-string.php Brukerinput må alltid sjekkes for feil, man vet aldri hva de finner på. Ihvertfall på backend men også i frontend (feks ved hjelp av javascript) Alternativt en tryggere måte å bruke mysql på: http://no.php.net/manual/en/ref.mysqli.php Og ja, strip_tags() for å hindre at brukere kan skrive html i gjesteboka er nyttig. alternativt også htmlspecialchars() http://no.php.net/manual/en/function.strip-tags.php http://no.php.net/manual/en/function.htmlspecialchars.php For eksempel: $sql = sprintf("INSERT INTO $tbl_name(navn, epost, kommentar, dato) VALUES ('%s', '%s', '%s', NOW() )", mysql_real_escape_string($navn), mysql_real_escape_string($epost), mysql_real_escape_string($kommentar)); $result = mysql_query($sql); TIPS: med mindre dato i $tbl_name ikke er en DATE, DATETIME eller hva det skal være, så kan du bruke MySQL funksjonen NOW() for å registrere tiden nå. (så kan det bare hentes ut med en av datoformateringsfunksjonene til mysql eller prosesseres i php) Endret 22. mars 2008 av LordjOX Lenke til kommentar
WiRRE Skrevet 22. mars 2008 Del Skrevet 22. mars 2008 Det gøyeste er å lage ett slikt javascript som slenger opp en liten grønn boks når ett felt har riktig innhold, og en rød boks hvis det er feil.. Legge inn på "onblur" på input'ene... må jo såklart ha ett script til som sjekker før du poster, og hindrer dette, pluss ett på serversiden... 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å