sql injection

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas

Bas

01/02/2009 17:51:00
Quote Anchor link
weet heeft er een link met een makkelijke uitleg over sql injection??
 
PHP hulp

PHP hulp

21/11/2024 16:56:09
 
Justin S

Justin S

01/02/2009 18:06:00
Quote Anchor link
Wonderen van het wereld wijde web en wikipedia:

http://nl.wikipedia.org/wiki/SQL_injection
 
Jesper Diovo

Jesper Diovo

01/02/2009 18:08:00
Quote Anchor link
SQL Injection geeft geloof ik toch wel genoeg links. Kies zelf de makkelijkste ;-).
 
Bas

Bas

01/02/2009 19:11:00
Quote Anchor link
@justin maar ik snap helemaal niks van die uitleg op wikipedia
 
PHP Newbie

PHP Newbie

01/02/2009 19:15:00
 
Emmanuel Delay

Emmanuel Delay

01/02/2009 22:13:00
Quote Anchor link
en als je een oplossing met toekomst wil uitproberen:
PDO met prepared statements maakt sql injection onmogelijk.

http://www.phphulp.nl/php/tutorials/8/534/
 
SXForce

SXForce

01/02/2009 23:17:00
Quote Anchor link
PHP Newbie heeft een fantastische link gegeven. :P

Vergeet trouwens ook niet de $_GET() in een escape string te zetten he.

mysql_real_escape_string($_POST['mijnnaam']);

mysql_real_escape_string($_GET['mijnnaam']);

Bij GET kunnen ze ook injection toepassen.
 
PHP Newbie

PHP Newbie

02/02/2009 00:28:00
Quote Anchor link
SXForce schreef op 01.02.2009 23:17:
PHP Newbie heeft een fantastische link gegeven. :P


Geschreven door Blanche en hier en daar aangevuld door mij :-)
 

02/02/2009 08:21:00
Quote Anchor link
Gelukkig kun je zelf ook je Class schrijven en hoef je PDO dan niet te gebruiken ;-)
 
Robert Deiman

Robert Deiman

02/02/2009 09:16:00
Quote Anchor link
@Chris Kortaan
En het voordeel daarvan is? PDO werkt prima en is helemaal niet lastig. Ik gebruik het ondertussen zelf ook al voor een aantal projectjes. Iets aanpassen/ uitbreiden en ik geef een query op en de LIMIT (voor pagina-nummering is evt. toe te voegen)

Verder de waarden die mee moeten kan je laten bepalen door mee te geven in een array, en voilla -> Heel simpel, doeltreffend en je hoeft helemaal niet PDO opnieuw uit te vinden.

Maar het ging om SQL injection te voorkomen, het minste wat je dan kan doen is de mysql_real_escape_string() gebruiken. Daarnaast moet je gewoon zorgen dat je bij alle invoer (waar mogelijk) controleert op geldige waarden, waar je een getal verwacht controleren of het ook een getal is (zo niet, dan gooi je die waarde gewoon leeg, zodat je hem niet kan gebruiken) enzovoorts. Zo voorkom je zelfs zonder de escape functie al een heleboel problemen met injectie, en kan je gebruikers ook toepasselijke fouten teruggeven. (lees: aangeven welke invoer niet goed is en waarom niet)
 
Martijn Wieringa

Martijn Wieringa

02/02/2009 10:32:00
Quote Anchor link
MYSQL Injection in essentie:

In PHP 'bouw' je een string op met een SQL commando die je wil laten uitvoeren op je mysql database. Deze string moet soms waarden bevatten die door de gebruiker zijn opgegeven. In feite helpt de input van de gebruiker dus mee met het opbouwen van je SQL commando.

'hackers' proberen de opbouw van dit SQL commando bewust te manipuleren.. dat noemen we mysql injection.

Stel, je hebt een query die er als volgt uitziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM `users` WHERE `username` = 'username' AND `password` = 'password' LIMIT 1;"
De velden username en password worden door de bezoeker ingevuld via een formulier.

De bezoeker/hacker wil heel graag inloggen als administrator, dus vult in:
username = Administrator
password = ' OR '1' = '1

De query die nu wordt opgebouwd is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM `users` WHERE `username` = 'Administrator' AND `password` = '' OR '1' = '1' LIMIT 1;"


Omdat de vergelijking
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'1' = '1'
altijd TRUE opleverd geeft
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
`password` = '' OR '1' = '1'
ook altijd TRUE.
 
Justin S

Justin S

02/02/2009 11:50:00
Quote Anchor link
Bas schreef op 01.02.2009 19:11:
@justin maar ik snap helemaal niks van die uitleg op wikipedia


Is bijna dezelfde uitleg als de link die PHPnewbie gaf... Alleen wellicht iets moeilijker taalgebruik.
 
PHP Newbie

PHP Newbie

02/02/2009 19:17:00
Quote Anchor link
Justin schreef op 02.02.2009 11:50:
Bas schreef op 01.02.2009 19:11:
@justin maar ik snap helemaal niks van die uitleg op wikipedia


... Alleen wellicht iets moeilijker taalgebruik.


Wie weet is dat wel de reden dat hij het niet snapt?
 



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.