waarom een fout
De provincie is : Provence-Alpes-Côte d'Azur
$up = mysqli_query($con,"update database_prov set provincie = '$prov' where Code = '$weg' ");
Ik weet niet meer hoe ik dit moet oplossen maar weet wel dat het met het accent te maken heeft van D'Azur.
Kan iemand helpen AUB.
Dank U
Gebruik mysqli_real_escape_string(..) om je variabelen $prov en $weg, en verdiep je in SQL-injection.
$mysqli->real_escape_string($prov);
Krijg daar ook een fout op
Wat voor fout?
Daardoor wordt je query:
"update database_prov set provincie = 'Provence-Alpes-Côte d'Azur' where Code = '1234' "
Mysql raakt nu in de war: want na die d (van d'Azur) denkt mysql dat je value eindigt. Maar wat doet die Azur daar dan?
De oplossing daarvoor is, dat er een \ komt voor tekens die als onderdeel van de value gezien moeten worden en dus niet het einde aangeven:
"update database_prov set provincie = 'Provence-Alpes-Côte d\'Azur' where Code = '1234' "
Dat verzorgt de genoemde escape functie:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$prov = "Provence-Alpes-Côte d'Azur";
$prov_escaped = mysqli_real_escape_string($con, $prov);
$up = mysqli_query($con,"update database_prov set provincie = '$prov_escaped' where Code = '$weg' ");
?>
$prov = "Provence-Alpes-Côte d'Azur";
$prov_escaped = mysqli_real_escape_string($con, $prov);
$up = mysqli_query($con,"update database_prov set provincie = '$prov_escaped' where Code = '$weg' ");
?>
(en ook voor $weg als dat niet een nummer is.)
Hartelijk dank voor uw duidelijke uitleg.
Dit heeft mij geholpen, en alles werkt perfect.
Nogmaals hartelijk dank daarvoor
JE hebt nu geluk dat je dit bij het testen of ontwikkelen tegenkomt. Maar test je alleen met de regio Bordeaux en Paris, dan zit daar dit teken niet in en gaat alles toevallig goed.
Minder leuk wordt het als je iemand treft die dit bewust uit laat voeren door behalve die ' ook nog zorgt dat je query verder in orde blijft maar gelijktijdig onbedoelde bijeffecten heeft
https://imgs.xkcd.com/comics/exploits_of_a_mom.png
SQL injectie is bijna nummer 1 in de wereldwijde lijst van 25 meest voorkomende kwetsbaarheden. Terwijl het toch zo ontzettend simpel is te verhelpen: gebruik in vredesnaam prepared statements!.
Op PHPHulp is er een handig script te vinden. Ook is er een handzame tutorial geschreven. Ook wereldwijd er is ar aandacht voor bij de OWASP Foundation.
Waarom blijft het dan lastig om het simpelweg goed te programmeren?
Dit gaat echt ontzettend vaak fout in software. Op PHPHulp is er een handig script te vinden. Ook is er een handzame tutorial geschreven. Ook wereldwijd er is ar aandacht voor bij de OWASP Foundation.
Waarom blijft het dan lastig om het simpelweg goed te programmeren?