beveiliging van $_GET uit url
zie onderstaand:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
//category nr ophalen van categorie.php
if(isset ($_GET['category'])) {
$categorie = mysql_real_escape_string($_GET['categorie']);
}//einde
?>
//category nr ophalen van categorie.php
if(isset ($_GET['category'])) {
$categorie = mysql_real_escape_string($_GET['categorie']);
}//einde
?>
Als de variabel door de bovenstaand if is gegaan, dan wordt deze ingevoerd in de onderstaande Query. VRAAG: Moet ik nu nog eens de variabel beveiligd invoeren in de query met mysql_real_escape_string(). (zie voorbeeld 1) of kan ik de variabel nu invoeren volgend Query (voorbeeld 2). ??????
P.s. Is een variabel met mysql_real_escape_string() voldoende beveiligd?
VOORBEELD 1
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
//VOORBEELD 1
SELECT *
FROM categorie WHERE categorieID = ". mysql_real_escape_string($categorie)."
";
?>
//VOORBEELD 1
SELECT *
FROM categorie WHERE categorieID = ". mysql_real_escape_string($categorie)."
";
?>
VOORBEELD 2
Dus dan zou voorbeeld 2 voldoende moeten zijn, wanneer je de eerste if doet, en hem door mysql_real_escape_string haalt en declareerd aan $catagorie.
Is je catagorie een woord(string) of een cijfer (int)? Als het een cijfer (int) is kun je intval ($_GET['categorie']); gebruiken, dan kan het alleen maar een int zijn en geen string meer.
Gewijzigd op 02/11/2012 10:10:59 door Chris PHP
1) Wat nu als $_GET['categorie'] leeg is? Dan wordt de variable $categorie niet aangemaakt, maar je gebruikt die wel in de query. Dit levert een Notice op.
2) Ik veronderstel dat category een id is, met andere woorden een integer. Wat nu als men geen integer maar een string invult? Je moet dus gaan controleren of het een integer is. http://php.net/manual/en/function.is-int.php
3) Je maakt onnodig een extra variable aan. Dit heeft totaal geen nut.
4) Wat nu als de categorie geen nummer is of niet ingevuld is, ga je dat dan zo laten en het script verder uitvoeren? Beter kan je een nette foutafhandeling maken.
Je kijkt eerst met een if of $_GET['category'] niet bestaat of dat deze leeg is. Als dat zo is dan ga je een waarde bij een array toeveogen. In dit array komen allee Errors te staan. Een array maak je als volgt aan:
Als je dan alle input velden (of $_GET variablen) hebt gecontroleerd kijk je of er waardes in het array zitten. Als er waardes inzitten laat je $error op de gebruiker zijn scherm zien, als er geen waardes inzitten dan kan je de query uitvoeren.
Bedankt voor de reacties. Hier kan ik wat mee! Ik ga ermee aan de slag :-)