Door Anoniem: Tip voor html ontwikkelaars: Als je alle variabelen die in een SQL statement eerst door een filter-routine haalt waarbij je alle ongewenste karakters vervangt door een procent-teken dan beschermt dat effectief goed tegen SQL injectie, bovendien heeft het dan vrrijwel geen impact op variabelen die iets in een database opzoeken (% is namelijk de SQL wildcard).
Neem in ieder geval de quootjes (enkel, dubbel) en de hash (#) in je filteer van ongewenste tekens mee. Ook een dubbel min-teken zou ik wegfilteren.
Zou inderdaad prepared/parameterized statements hiervoor gebruiken.
Daarnaast klopt dat het weinig effect op de resultaten van een query heeft ook niet. Als je WHERE clausule er namelijk bijvoorbeeld zo uitziet:
WHERE username = '%Anoniem%'
Dan krijg je gewoon enkel de records terug waarin het veld username "%Anoniem%" bevat. Het procent teken wordt gewoon letterlijk opgevat, pas als je het sleutelwoord like gebruikt (dus WHERE username like '%Anoniem%') kun je een patroon met Wildcards opgeven. Maar om nou al je queries naar patronen te laten zoeken, terwijl je vaak gewoon een exacte match wil, puur omdat je niet aan de prepared statements wil...