MySQL injections

Tags:    php

Hej Udviklere

Synes efter hånden at have søgt internettet tynt for at finde ud af hvordan man sikrer sig mod MySql injections på variabler der IKKE skal valideres. ex et felt hvor der må indtastes HTML.

Det eneste jeg er kommet frem til er at bruge addslashes(), hvilket er en god ide at bruge på ALLE input til databasen, også dem der bliver valideret på anden vis.

Mit spørgsmål er nu. Er det nok???

Bruger p.t. denne funktion til mine input til databasen.

Fold kodeboks ind/udKode 





Indlæg senest redigeret d. 15.08.2008 13:08 af Bruger #2345
5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato




Indlæg senest redigeret d. 29.09.2008 11:34 af Bruger #13985
Hej Ronnie

Takker for det hurtige svar.

Grunden til at jeg sprugte, er at jeg er ved at lave et SIMPELT db layer.

SQL sætninger bygges op som neden stående.

Fold kodeboks ind/udKode 


Vil gerne have en kommentar til koden.

Koden er naturligvis ikke færdig endnu, meninger er at mysql_qurey() skal puttes ind i sql_string.



hvad er ideen med at lave en function der tager queryen og input variabler, for at returnere queryen, i stedet for bare at skrive input variablerne det rigtige sted til at begynde med?

I øvrigt udlukker din metode såvidt jeg kan se da at man kan bruge '' i en query.

udover det så hvis du skal lave det ville jeg foreslå at du sendte input variablerne videre til en function der gjorde dem sql safe og returnere de sikre værdier også bruger sprintf

http://dk2.php.net/manual/en/function.vsprintf.php



Hej Jakob og Nørden :D

Tak for respons

Jakob:
hvad skal mysql_real_escape_string() være godt for. Hvad beskytter den som addslashes() ikke gør??

Nørden:
Der er ingen problem med at bruge '' i en query, her skal værdien i arrayet bare være tomt.

Grunden til at jeg ikke skriver variablerne direkte i SQL sætningen er at så kan jeg ikke validere dem hver for sig.

Meningen er ikke at funktionen "bare" skal returnere SQL sætningen igen, men lave DB kaldet og derefter returnere resultatet af forespørgslen.

Til sidst
Har kigget lidt på vsprintf() men kan ikke udmiddelbart se hvad den skal gøre.

Takker for svarerne.






t