[Tip] Anti SQL injection

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thijs X

Thijs X

27/11/2007 12:33:00
Quote Anchor link
Ik kwam onlangs deze functie tegen 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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


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
 
PHP hulp

PHP hulp

24/04/2024 05:33:42
 
Kalle P

Kalle P

27/11/2007 12:35:00
Quote Anchor link
Je draaft een beetje door.

http://nl3.php.net/pdo

preperad statements en je bent er vanaf.
 
Aaa Trump

aaa Trump

27/11/2007 12:38:00
Quote Anchor link
Who, thanks lekker makkelijk. Kan ik dit ook in een functie verwerken? Of moet ik dan een aparte pagina met die code includen?
 
Thijs X

Thijs X

27/11/2007 12:44:00
Quote Anchor link
@ Kalle,
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.
 
Frank -

Frank -

27/11/2007 12:49:00
Quote Anchor link
addslashes? Waarom zou je de data naar de bliksem willen helpen? Nooit gebruiken, heb je niks aan. Gebruik dan in elk geval mysql_real_escape_string().

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.
 
Thijs X

Thijs X

27/11/2007 13:11:00
Quote Anchor link
Het kan idd ook met mysql_real_escape_string ipv addslashes, maar wat is het verschil ?
 
Frank -

Frank -

27/11/2007 13:16:00
Quote Anchor link
addslashes gooit een keiharde slash in de database die je er ook weer uit moet halen. mysql_real_escape_string zet een slash in de query zodat deze niet mislukt. Er komt géén slash in de database te staan, die hoef je er dus ook niet meer uit te halen.

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.
 
Thijs X

Thijs X

27/11/2007 13:22:00
Quote Anchor link
Ah, dat is inderdaad een stuk beter.
Heb het gelijk even in mn bovenstaande post veranderd.
 
Jelmer -

Jelmer -

27/11/2007 15:18:00
Quote Anchor link
Dit doet me denken aan magic_quotes_gpc...

... 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 -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.