Avatar billede kimox Nybegynder
15. februar 2011 - 10:40 Der er 15 kommentarer og
1 løsning

SQL injection

Hej eksperter.

Jeg må hellere få sikret min side mod SQL injection, da der har været noget hack, jeg har siddet og læst lidt om det, men jeg synes ikke jeg har forstået det helt endnu.

Derfor:
er det nok bare at smide f.eks dette script ind:

      function mysql_escape_mimic($str)        {                $search=array("\\","\0","\n","\r","\x1a","'",'"');                $replace=array("\\\\","\\0","\\n","\\r","\Z","\'",'\"');                return str_replace($search,$replace,$str);        }

alle steder hvor jeg har en POST og GET ?

eller skal jeg bare ændre alle mine POST og GET til:

$id= mysql_real_escape_string($_GET[id]);
$navn= mysql_real_escape_string($:POST[navn]);


og er det nok til at holde folk ude af siden?
Avatar billede repox Seniormester
15. februar 2011 - 10:46 #1
Kun de steder hvor du smider noget gennem databasen.
Hvis du kan bruge mysql_real_escape_string() i stedet for din mysql_escape_mimic(), så gør det.
Avatar billede ksoren Nybegynder
15. februar 2011 - 10:58 #2
Det kommer an på din sql. F.eks.

select * from noget where id=$tal

tal er ikke angivet som en streng her, derfor vil mysql_real_escape_string heller ikke holde hackeren væk.
Avatar billede keysersoze Guru
15. februar 2011 - 10:59 #3
Du bør dog kigge nærmere på at benytte prepared statements fremfor nuværende løsning.
Avatar billede repox Seniormester
15. februar 2011 - 11:02 #4
#2
Det vil også være tåbeligt ikke at validere inputtet som et faktisk tal inden man smider sådan noget efter databasen...
Avatar billede ksoren Nybegynder
15. februar 2011 - 11:03 #5
#4 Så fortæl spørgeren, at det er det, han skal. Det giver du ingen steder udtryk for.
Avatar billede repox Seniormester
15. februar 2011 - 11:07 #6
#5
Du begav dig med en specifik forespørgsel - ikke jeg; OP ville vide hvor han skulle bruge funktionen, som jeg også svarede på. Det havde været væsentligt mere relevant for dig at have uddybet din kommentar i stedet for at jeg skulle gøre det for dig.
Avatar billede ksoren Nybegynder
15. februar 2011 - 11:08 #7
Spørger skriver:

$id= mysql_real_escape_string($_GET[id]);


Så er det oplagt, at han nu er på vildspor...
Avatar billede repox Seniormester
15. februar 2011 - 11:12 #8
#7
Stadigvæk, det var ikke mig der gav et specifikt eksempel, hvorfor jeg ikke kan se hvorfor jeg skal forsvare en manglende uddybelse.
Avatar billede ksoren Nybegynder
15. februar 2011 - 11:14 #9
Du bekræftede ham i at funktionen var nok...
Avatar billede repox Seniormester
15. februar 2011 - 11:17 #10
#9
Du får ret, jeg får fred...

#0
Valider input, brug mysql_real_escape_string() efter validering om nødvendigt.

Er alle tilfredse?
Avatar billede ksoren Nybegynder
15. februar 2011 - 11:23 #11
Du skal på pædagogkursus. Han siger, han ikke helt har forstået det der med sql-injektion. Dit indlæg vil hjælpe til med at holde hans hackere væk.
Avatar billede ksoren Nybegynder
15. februar 2011 - 11:24 #12
Dit indlæg vil ikke hjælpe til med at holde hans hackere væk.
Avatar billede repox Seniormester
15. februar 2011 - 11:31 #13
#11
Dine personlige holdninger til min person kan du stile direkte til mig i en privat besked - den diskussion er ikke interessant for tråden.

Jeg besvarede det direkte spørgsmål - pædagogik, læse mellem linierne og så videre er ikke interessant for mit vedkommende - jeg er her ikke for at give pattebørn flaske. Du er til enhver tid velkommen til at give et bedre og mere uddybende svar end mit og dermed gøre dig bedre fortjent til pointgivningen. Debatten om dette er slut for mit vedkommende - er du utilfreds med mit svar/kommentar til tråden, så læg et der er bedre i stedet for det pjat der. Er du utilfreds med mig som person, så tilkendegiv det i en privat besked i stedet.
Avatar billede ksoren Nybegynder
15. februar 2011 - 12:29 #14
"pattebørn flaske"

Sikke en arrogant holdning
Avatar billede repox Seniormester
15. februar 2011 - 12:31 #15
#14
Læs venligst min profil tekst: http://www.eksperten.dk/profil/repox
Avatar billede kimox Nybegynder
15. februar 2011 - 16:17 #16
Opfordring fra repox - at lukke tråd og lave en ny.

dette gir jeg ham ret i, i er velkommmen til at fortsætte herinde :-), men jeg lavet et nyt spørgsmål med et par eks. også.

i er begge velkommen til at deltage :-)

- lukket -
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester