Ik heb klein onderzoekje gedaan naar mysql injections.
Ik begrijp al een gedeelte wat het betekend en waarom het belangrijk is om dit tegen te gaan.
Zo ver ik er uit kan maken kan je met mysql injections b.v. gegevens uit een database verwijderen en nog meer.
Ik heb een klein stukje geschreven maar werkt nog niet perfect.
Mijn leraar zeg dat ik er niet aan hoef te denken en gewoon plain in de mysql moet zetten.
En dat ik niet aan mysql injection moet denken tot het pas gebeurt.
Ik zelf vindt dat ik nu al gelijk moet proberen te beveilingen en al te voorkomen voor het gebeurt.
in mijn index pagina heb ik de volgende functie aangemaakt:
Dit moet er voor zorgen dat mysql injecties vrij ver worden tegen gehouden.
Als ik dan die functie over de $_POST waarde doe en echo dat laat die het goed zien.
Maar in de database doet die het niet goed weergeven.
$voornaam = quote_smart($_POST['vnaam']);
Als ik echo dan zeg die b.v. - test\'test\'
Zoals je ziet echo hij het goed.
Maar als ik in mijn database kijk staat er test'test'
Volgens mij klopt dat niet en moet die gewoon met een \ er bij.
mijn query:
$query = "UPDATE gebruikers SET Voornaam = '$voornaam' WHERE Gebruikersnaam = '$gebruiker'";
mysql_query($query);
als ik $voornaam = mysql_real_escapes($_POST['voornaam']); doe dan zet die wel test\'test\' in de database.
wie weet wat het probleem kan zijn?
Ik begrijp al een gedeelte wat het betekend en waarom het belangrijk is om dit tegen te gaan.
Zo ver ik er uit kan maken kan je met mysql injections b.v. gegevens uit een database verwijderen en nog meer.
Ik heb een klein stukje geschreven maar werkt nog niet perfect.
Mijn leraar zeg dat ik er niet aan hoef te denken en gewoon plain in de mysql moet zetten.
En dat ik niet aan mysql injection moet denken tot het pas gebeurt.
Ik zelf vindt dat ik nu al gelijk moet proberen te beveilingen en al te voorkomen voor het gebeurt.
in mijn index pagina heb ik de volgende functie aangemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| //Funcie voor mysql injection tegen te gaan function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } //Controleer of query geen nummeriek is if (!is_numeric($value)) { $value = mysql_real_escape_string($value); } return $value; } |
Dit moet er voor zorgen dat mysql injecties vrij ver worden tegen gehouden.
Als ik dan die functie over de $_POST waarde doe en echo dat laat die het goed zien.
Maar in de database doet die het niet goed weergeven.
$voornaam = quote_smart($_POST['vnaam']);
Als ik echo dan zeg die b.v. - test\'test\'
Zoals je ziet echo hij het goed.
Maar als ik in mijn database kijk staat er test'test'
Volgens mij klopt dat niet en moet die gewoon met een \ er bij.
mijn query:
$query = "UPDATE gebruikers SET Voornaam = '$voornaam' WHERE Gebruikersnaam = '$gebruiker'";
mysql_query($query);
als ik $voornaam = mysql_real_escapes($_POST['voornaam']); doe dan zet die wel test\'test\' in de database.
wie weet wat het probleem kan zijn?