Sinds gisteren ben ik bezig met mijn eerste PDO queries. Op de webserver die ik gebruik staan de Magic Quotes aan. Ik was eerst in de veronderstelling dat het hele PDO verhaal buiten die magic quotes om ging, maar dat blijkt niet zo te zijn, want als ik een naam invoer met quotes dan krijg ik er in de database toch elke keer een \ voor. Dus moest ik de magic quotes escapen en dat doe ik met het onderstaande IF statement. Dan komt alles precies zo in de database zoals ik het invoer.
Ik vroeg me alleen af of ik door dat IF statement met die stripslashes nog wel veilig bezig ben. Dus dat ze nu niet via SQL injection toch iets kunnen doen. Overige op- en aanmerkingen zijn natuurlijk ook welkom.
Ik vroeg me alleen af of ik door dat IF statement met die stripslashes nog wel veilig bezig ben. Dus dat ze nu niet via SQL injection toch iets kunnen doen. Overige op- en aanmerkingen zijn natuurlijk ook welkom.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?php
include("_checkuser.php");
if (get_magic_quotes_gpc() === 1)
{
$_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
$_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
$_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
$_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
}
include("connect.inc");
$klant_nummer = $_POST['klant_nummer'];
$klant_naam = $_POST['klant_naam'];
$sql = "INSERT INTO klant (klant_nummer, klant_naam) VALUES (:klant_nummer, :klant_naam)";
$q = $pdo->prepare($sql);
$q->execute(array(':klant_nummer'=>$klant_nummer, ':klant_naam'=>$klant_naam));
?> |