Du bør gennemvalidere dine indtastningsfelter så det ikke kan lade sig gøre at indtaste f.eks. tekst der bliver opfattet som kode og andre ikke hensigtsmæssige ting
Ja og nej, bufferzone. Ja, hvis det er et felt med struktur, fx et tal eller en dato. Så skal der checkes at det overholder formatet - regulære udtryk er bare gode til det.
Nej, hvis det er et tekstfelt. Om brugeren nu har lyst til at skrive sit navn som "drop database mysql" skal han have lov til det - umiddelbart i hvert fald. Her er det eneste man behøver, at bruge addslashes - man skal selv hvis PHP ikke gør det for een.
Bufferzone: jeg har mere brug for konkrete eksempler - er først fornylig blevet bekendt med faren i forbindelse med SQL injection.. Men som ztyxx og erikjacobsen påpeger, så er addslashes måske nok i nogle tilfælde - og så må jeg bruge regex's i de felter, hvor der er tal
; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off
I PHP <= 4.3.1 står disse pr. default til off. Hvis de står til on påfører de ekstra tegn til det på ens SQL-streng, ser det ud til...hmmm... så må jeg bruge addslashes
Der har lige været en artikel om SQL injection i PCworld eller Computerworld, jeg husker ikke præcist hvilken af dem det var, men der er eksempler på forskellige destruktive koder
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.