Oprettet tir. d. 10. marts 2009 kl. 19:15:25

andreas13_fam
andreas13_fam (3.790 point. Point ude: 60)

lidt om sikkerhed

Jeg ville da godt lære lidt om sikkerhed nu, men jeg syntes at det er meget svært at finde brugbare oplysninger om det.
Fx MySQL infection, her er rigtig mange forslag, men jeg har bare ikke en chance for at finde ud af hvad der er bedst, og mest opdateret.

Jeg har lavet et utestet dokument som eksempel:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/ (...)
<html>
<head>
<title>Lidt op sikkerhed </title>
</head>
<body>

<form method="post" action="#">
<input type="text" name="tekst">
</form>

<?php
echo '
      <div style="width:300px;">
      '$_POST['tekst'].'
      </div>
    ';

mysql_query("INSERT INTO tekst (tekst) VALUES (".$_POST['tekst'].")") OR DIE(mysql_error());
?>

</body>
</html>

Så hvad har i af gode råd.

Skrevet tir. d. 10. marts 2009 kl. 20:22:12| #1

arne_v
arne_v (1.005.623 point)
Det der er ihvertfald ikke godt. Du er pivaaben for SQL injection.

Minimum noget PHP escaping.

Bedre MySQL escaping.

Bedst mysqli og parameters (eller PDO).

Skrevet tir. d. 10. marts 2009 kl. 20:50:41| #2

andreas13_fam
andreas13_fam (3.790 point)
Det der er ihvertfald ikke godt. Du er pivaaben for SQL injection.
Jamen det er lige præsis det jeg gik efter, efter som det er et eksempel. Men med alle de fag udtryk kan jeg finde en masse. Men jeg ved ikke hvordan det skal strikkes sammen.

PS: der vil ikke ske en dyt efter som den ikke er conekted
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/ (...)
<html>
<head>
<title>Lidt op sikkerhed </title>
</head>
<body>

<form method="post" action="#">
<input type="text" name="tekst">
</form>

<?php
echo '
      <div style="width:300px;">
      '$_POST['tekst'].'
      </div>
    ';
mysql_connect("server", "brugernavn", "password") or die(mysql_error());
mysql_select_db("databasenavn") or die(mysql_error());
mysql_query("INSERT INTO tekst (tekst) VALUES (".$_POST['tekst'].")") OR DIE(mysql_error());
?>

</body>
</html>

Skrevet tir. d. 10. marts 2009 kl. 20:53:18| #3

andreas13_fam
andreas13_fam (3.790 point)
Jeg vil altså godt lære noget, og påfylde en ting af gangen på min dårlige PHP-fil så den bliver mere sikker hen af vejen

Skrevet tir. d. 10. marts 2009 kl. 21:32:44| #4

arne_v
arne_v (1.005.623 point)
Start med at laere mysqli og prepared statement (som parameters hedder i PHP).

Skrevet tir. d. 10. marts 2009 kl. 22:58:59| #5

zips
zips (31.432 point)
Måske dette kan hjælpe lidt med din sikkerhed http://www.eksperten.dk/ (...)

Det skal dog siges at erikjacobsen også anbefalder mysqli som arne_v også gør.

Skrevet ons. d. 11. marts 2009 kl. 15:06:49| #6

andreas13_fam
andreas13_fam (3.790 point)
det virker ikke som om at PDO og mysqli er noget som kan bruges sammen, da de "gøre det samme".

Jeg har forsøgt med mysqli og det ser sådan ud nu.
Jeg er dog lidt i tvivl om det er den rigtige måde at udskive fejl på.
    else
    {
    printf("Errorcode: %s\n", $stmt->error);
    }

_____________________________________________

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/ (...)
<html>
<head>
<title>Lidt op sikkerhed </title>
</head>
<body>

<form method="post" action="#">
<input type="text" name="tekst">
</form>

<?php
echo '
      <div style="width:300px;">
      '$_POST['tekst'].'
      </div>
    ';
$mysqli = new mysqli("localhost", "brugernavn", "kodeord", "databasenavn");
if (mysqli_connect_errno())
{
    printf("Fejl ved tilslutning: %s\n", mysqli_connect_error());
    exit();
}
    if ($stmt = $mysqli->prepare("INSERT INTO tekst (tekst) VALUES (?)"))
    {
    $stmt->bind_param("s", $_POST['tekst']);
    $stmt->execute();
    $stmt->close();
    }
    else
    {
    printf("Errorcode: %s\n", $stmt->error);
    }
$mysqli->close();
?>
</body>
</html>

Skrevet ons. d. 11. marts 2009 kl. 15:19:11| #7

arne_v
arne_v (1.005.623 point)
Ja - det er mysqli *eller* PDO.

Ovenstaaende skulle beskytte mod SQL injection.

Du boer dog stadig validere input for at beskytte mod XSS.

Med hensyn til fejl haandtering boer du overveje om du skal logge en teknisk fejlmeddelelse til admin og give brugeren en mere bloed besked.

Skrevet ons. d. 11. marts 2009 kl. 16:52:52| #8

andreas13_fam
andreas13_fam (3.790 point)
Jeg har nu også tænkt mig at logge fejlkode.
Men hvad er XSS og er der nogle funktioner man bør kende.

Skrevet ons. d. 11. marts 2009 kl. 17:11:32| #9


Skrevet tor. d. 12. marts 2009 kl. 15:27:41| #10

andreas13_fam
andreas13_fam (3.790 point)
Okay nu tror jeg at jeg har nogen lunde styr på hvad XSS er, og der skal en del reg.exp. for at komme det til livs. Men er der andet end reg.exp der kan bruges.

Skrevet tor. d. 12. marts 2009 kl. 15:47:09| #11

arne_v
arne_v (1.005.623 point)
Du skal validere input.

Husk at du skal validere positivt (kun acceptere det som vi er 100% sikre paa er OK) ikke negativt (kun afvise det som vi er 100% sikre paa er farligt).

Regex er standard til rigtigt mange former for validering.

Skrevet tor. d. 12. marts 2009 kl. 15:58:47| #12

andreas13_fam
andreas13_fam (3.790 point)
Jamen tak for de gode råd. Er der nogen dre ville have point ?

Skrevet tor. d. 12. marts 2009 kl. 16:03:36| #13

arne_v
arne_v (1.005.623 point)
jeg samler

Skrevet tor. d. 12. marts 2009 kl. 18:35:48| #14

andreas13_fam
andreas13_fam (3.790 point)
Det kan jeg se :D

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

HTTP Post XML og modtag svar

Oprettet den 10. februar 2012 kl. 17.55
mrkaynex giver 200 point for svar | Giv et svar »

Inspion Economy søger en dygtig programmør, som kan...

Oprettet den 10. februar 2012 kl. 16.09
Kathja giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger