12. februar 2009 - 12:59Der er
17 kommentarer og 1 løsning
Søge form problem & og ikke &
jeg har et søge <form> som er ret stor så i en forkortet version ser det sådan ud. <form method="get" action="index.php"> <input name="search" type="text" /> <input name="Bruger" type="text" /> <input type="submit" value=" Søg " /> </form> Når man så trykke på søg ser det sådan ud fx index.php?search=TEST&Bruger=TEST Men det giver en del problemer og jeg tror at det ville blive løst hvis jeg kunne få & erstattet med & fx index.php?search=TEST&Bruger=TEST
Du fortæller ikke noget om karakteren af problemerne - og selv min ellers ret så saftspændte fantasi kan ikke levere gennembrud med hensyn til, hvad '&' skulle kunne gøre for dig =)
#2 - det kan der være noget om :D Problemet ligger i at ud fra adresselinjen laves et link fx <a href="index.php?search=TEST&Bruger=TEST&side=2">Side 2</a> Der er muligt at man via PHP kan erstatte alle & med & men hvordan man undgår at der kommer til at stå <a href="index.php?search=TEST&amp;Bruger=TEST&side=2">Side 2</a> er det jeg lejer med lige nu.
Du bruger da bare variablerne fra query-strengen. Hvis du bare møger hele requesten videre, har du jo heller ikke noget tjek på, hvad den indeholder. Nu kender jeg ikke din applikation, men det lyder skidt =)
Ja men min query-strengen er ret komplex, og der er derfor ikke rigtigt muligt. Jeg tror dog ikke det kan blive noget seriøst skidt sådan som jeg har lænkt mig, efter som alle tegn fjernes inden det bliver sendt til MySQL efterspørgelsen.
Jeg er bange for at jeg ikke kan slippe af sted med noget simpelt, i midt tilfælde. Kan du se om der er noget galt i dette. if (isset($_GET['udvid'])) { if($_GET['udvid'] == "nej") { $url = "search=".$_GET['search']."&bio=".$_GET['bio']."&udvid=nej"; } elseif($_GET['udvid'] == "ja") { $url = "search=".$_GET['search']."&bio=".$_GET['bio']."&udvid=ja&Bruger=".$_GET['Bruger']."&Oprindelse=".$_GET['Oprindelse']; } }
Her er hvordan det bliver brugt echo '<a href="index.php?'.$url.'&side=2">Link</a>'; Hvis du tænker på MySQL infektion så er jeg i gang med at læse om det. Men det er en jungle for en nybegynder. Så lige pt har jeg bare et script der fjerne de fleste tegn.
SQL-injection er kun én del af sikkerhedsovervejelserne, man bør gøre sig. Men hvad SQML-injection angår, så burde du absolut tjekke mysqli og prepared statements ud, hvis din server understøtter det: http://dk2.php.net/manual/en/book.mysqli.php
Andreas: Glem alt om at sætte & ind selv. Byg din querystring op med &-ere som du gerne vil have dem til at se ud. Og så når du skal skrive den i et HTML-dokument, så skal du som med alle andre strenge, i hvert fald dem, der indeholder HTML-giftige tegn, bruge funktionen htmlentities - eller tilsvarende. Intet mystisk i det, kun godt gammeldags håndværk. Dvs.
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.