[Tip] Anti SQL injection
array_map, waarmee je erg gemakkelijk al je input van addslashes voorzien met een enkele regel ( Om SQL injection tegen te gaan ).
Omdat het niet echt een toegevoegde waarde heeft in het script lib, post ik het hier even omdat mensen er misschien nog wat aan hebben.
Scheeld je heel wat addslashes of escape's in je querys ;)
Edit2:
even naar mysql_real_escape_string veranderd, je moet hiervoor wel eerst verbinding maken met de DB om het te gebruiken.
Edit:
Ook voor de mensen die een foreach gebruiken is dit netter ;) Of het verschil maakt qua snelheid weet ik niet.
Ik kwam onlangs deze functie tegen Omdat het niet echt een toegevoegde waarde heeft in het script lib, post ik het hier even omdat mensen er misschien nog wat aan hebben.
Scheeld je heel wat addslashes of escape's in je querys ;)
Edit2:
even naar mysql_real_escape_string veranderd, je moet hiervoor wel eerst verbinding maken met de DB om het te gebruiken.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
// Deze regels gewoon even bovenaan elke pagina includen of even toevoegen aan je config bestand.
$_POST = array_map("mysql_real_escape_string", $_POST);
$_GET = array_map("mysql_real_escape_string", $_GET);
$_REQUEST = array_map("mysql_real_escape_string", $_REQUEST);
$_COOKIE = array_map("mysql_real_escape_string", $_COOKIE);
$_SERVER = array_map("mysql_real_escape_string", $_SERVER);
?>
// Deze regels gewoon even bovenaan elke pagina includen of even toevoegen aan je config bestand.
$_POST = array_map("mysql_real_escape_string", $_POST);
$_GET = array_map("mysql_real_escape_string", $_GET);
$_REQUEST = array_map("mysql_real_escape_string", $_REQUEST);
$_COOKIE = array_map("mysql_real_escape_string", $_COOKIE);
$_SERVER = array_map("mysql_real_escape_string", $_SERVER);
?>
Edit:
Ook voor de mensen die een foreach gebruiken is dit netter ;) Of het verschil maakt qua snelheid weet ik niet.
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
Who, thanks lekker makkelijk. Kan ik dit ook in een functie verwerken? Of moet ik dan een aparte pagina met die code includen?
Daar ga ik eens even naar kijken, maar voor de mensen die geen mogelijkheid hebben om gebruik te maken van PHP5 ( en dus ook geen PDO ) is dit een erg makkelijke oplossing.
@ Robin,
Het is al een functie je hoeft het alleen maar ergens bovenaan aan je pagina's te includen. Ik neem aan dat je iets van een config bestand hebt ( die je in elke pagina include ) om verbinding te maken met je MySQL database.
Dan zou je deze 5 regels ergens op die pagina kunnen plaatsen zodat je ze altijd include.
En wanneer je eind november 2007 nog steeds geen PHP 5 kunt gebruiken, dan wordt het hoogste tijd om over te stappen. Over een kleine 6 weken is het over en sluiten met de ondersteuning van versie 4. Zie het ontbreken van PDO dan ook niet als een beperking, maar een reden om nú een andere hostingprovider op te zoeken of zelf een update uit te voeren.
Het kan idd ook met mysql_real_escape_string ipv addslashes, maar wat is het verschil ?
addslashes kun je dus onmogelijk gebruiken zonder ook stripslashes te gebruiken. Vergeet je dat een keer, kan de boel hopeloos fout gaan, met ontelbare slashes als eindresultaat... Nooit meer gebruiken dus, er zijn betere/slimmere oplossingen beschikbaar.
Heb het gelijk even in mn bovenstaande post veranderd.
... en alle ellende die daar mee gepaard ging.
Ik ben van mening dat het escapen of het typecasten van invoer vlak voordat het de query in gaat de handigste manier is. Of nog beter, zoals Kalle al zei, PDO gebruiken en helemaal geen gebruikers-invoer meer in je query hoeven verwerken.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -