Veilig stukje anti sql injectie?
Ik gebruik nu het volgende stukje code om sql-injecties tegen te gaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function check_input($value)
{
// Stripslashes
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!is_numeric($value))
{
$value = "" . mysql_real_escape_string($value) . "";
}
return $value;
}
$id = check_input($_GET["id"]);
{
// Stripslashes
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!is_numeric($value))
{
$value = "" . mysql_real_escape_string($value) . "";
}
return $value;
}
$id = check_input($_GET["id"]);
Is dit veilig, of kan het beter?
Gewijzigd op 22/03/2011 21:45:23 door Collin Php
Alleen de quotes voor en na mysql_real_escape_string zijn overbodig.
Top! Bedankt voor de snelle reactie.
-2.14123123E-12 is ook numeric. Je kan daar beter ctype_int van maken.
Wat je ook nog zou kunnen doen is typecasten naar int of string.
Die quotes hebben geen zin, je zou inderdaad wel typecasting string eraan toe kunnen voegen.
haal ze ervoor en erna weg?
eventueel nog dit:
Yea Rupie op 23/03/2011 08:39:51:
Dit is echt onzin: $value = "" . mysql_real_escape_string($value) . "";
haal ze ervoor en erna weg?
eventueel nog dit:
haal ze ervoor en erna weg?
eventueel nog dit:
Type casten, met (string) of quotes is niet nodig, zie php.net: mysql_real_escape_string levert al een string.
Als je al zou willen typecasten (wat in php eigenlijk nooit hoeft) dan zou alleen quotes voor de functie zetten voldoende zijn.
De naam die je aan de functie hebt gegeven vind ik niet erg logisch, pas ook op met vergelijkingen. mysql_real_escape_string past wel de string aan!
Quote:
Als je al zou willen typecasten (wat in php eigenlijk nooit hoeft) dan zou alleen quotes voor de functie zetten voldoende zijn.
Typecasten naar int kan heel handig zijn.
Pim - op 23/03/2011 09:47:09:
Typecasten naar int kan heel handig zijn.
Quote:
Als je al zou willen typecasten (wat in php eigenlijk nooit hoeft) dan zou alleen quotes voor de functie zetten voldoende zijn.
Typecasten naar int kan heel handig zijn.
Sorry voor de onduidelijkheid, als je naar string wilt typecasten, dan hoef je dat eigenlijk nooit te doen. Php typecast bijna alles naar string.
Deze functie is niet nodig voor als je een integer hebt, dan kan je gewoon naar int typecasten (ging daar vanuit dat iedereen dat wel snapte, maar dat is natuurlijk niet zo).