Op mijn webhost staat Magic Quotes aan.

Op mijn pagina maak ik gebruik van
$klas = $_POST["klas"];
$periode = $_POST['periode'];

icm
$sql="SELECT leerling FROM KLASSEN where klas='$klas'";
$result = mysql_query($sql);

is dit dan genoeg beveiligd (SQL injectie o.i.d.) ?
Wat kan ik nog meer doen om de beveiliging te vergroten?
Als eerste magic quotes UITZETTEN! Dat is echte de meest verschrikkelijke optie die ze ooit hebben uitgevonden.

Gewoon zelf escapen daar waar het nodig is, dus voor je een waarde gaat gebruiken in een query.
Oke zal ik doen maar wat bedoel je precies met zelf escapen. Ik heb daar al wel diverse dingen over gelezen maar snap dat niet helemaal

O ja, hoe kan ik Magic Qoutes uitschakelen want mijn webhost regelt dat ws
Nee, je moet op zijn minst mysql_real_escape_string() gebruiken.

<?php
$sql = "SELECT leerling FROM KLASSEN where klas='" . mysql_real_escape_string($klas) . "'";
?>

Verder kan het geen kwaad om nu over te stappen op MySQLi of PDO, want de standaardextensie voor MySQL is verouderd.
Als je webhost het regelt heb je waarschijnlijk al direct een probleem, want dan kan je het in veel gevallen niet zelf meer doen. Probleem is dat je magic quotes aan of uit zet in php.ini en daar heb je op een shared host waarschijnlijk geen toegang toe.

Met escapen wordt bedoeld het escapen (lees: onschadelijk maken) van bepaalde karakters. Meestal gaat het dan om enkele en dubbele quotes in strings. Niet alleen is dat nodig voor sql injectie, maar ook voor het goed invoeren van strings waarin quotes zitten (denk aan 's Gravenhage). Check http://php.net/mysqli_real_escape_string
(en bedenk ook of je niet over wil van de mysql_xxxx functies naar mysqli_xxxx functies, omdat de eerste eruit gaan)
mysql_real_escape_string() is deprecated dus ik kan idd beter overstappen.
Welke is het makkelijkste om op over te stappen?

Reageren