Programmeren in PHP/MySQL in PHP: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Regel 314:
$query = "SELECT * FROM `table` WHERE `x` = " . $waarde
 
Hier kun je alles in de variabele $waarde zetten, ook bijvoorbeeld de string " 1 OR 1=1" die er voor zorgt dat alle gegevens uit de hele tabel worden opgevraagtopgevraagd en niet alleen de gegevens die voldoen aan de voorwaarde die wij in gedachten hadden. Nou is dat niet zo'n ramp in dit geval, omdat het geen gegevens verwijdert uit onze query. Daar steekt MySql zelf namelijk een stokje voor. Normaal zou je namelijk een query 'koppelen' door het ; teken, als je $waarde dan in "1; DELETE * FROM table" verandert, zie je de bui al hangen? Maar, omdat MySql niet twee query's kan verwerken die gescheiden zijn door een ; werkt dit niet.
Om toch een groot deel van de fouten te voorkomen, meest voorkomende is het injecteren van een apostrof (') in de query, om simpelweg te kijken of MySql over z'n nek gaat, gebruiken we de functie [http://nl3.php.net/mysql_real_escape_string mysql_real_escape_string], in combinatie met de functie [http://nl3.php.net/array_map array_map] omdat we alle gegevens uit $_POST in de SQL query gaan gebruiken.
De aanroep wordt dan dus:
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.