Veilig stukje anti sql injectie?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Collin Php

Collin Php

22/03/2011 21:44:09
Quote Anchor link
Hallo,

Ik gebruik nu het volgende stukje code om sql-injecties tegen te gaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"]);



Is dit veilig, of kan het beter?
Gewijzigd op 22/03/2011 21:45:23 door Collin Php
 
PHP hulp

PHP hulp

29/03/2024 06:31:29
 
Barttje R

Barttje R

22/03/2011 22:03:50
Quote Anchor link
Code is goed genoeg om een sql injectie tegen te gaan.
Alleen de quotes voor en na mysql_real_escape_string zijn overbodig.
 
Collin Php

Collin Php

22/03/2011 22:05:42
Quote Anchor link
Top! Bedankt voor de snelle reactie.
 
Pim -

Pim -

22/03/2011 22:06:33
Quote Anchor link
-2.14123123E-12 is ook numeric. Je kan daar beter ctype_int van maken.
 
Wouter J

Wouter J

22/03/2011 22:22:57
Quote Anchor link
De quotes zijn zeker wel nodig als het niet numeric is, want een string moet je als string behandelen.

Wat je ook nog zou kunnen doen is typecasten naar int of string.
 
Barttje R

Barttje R

22/03/2011 22:41:38
Quote Anchor link
Die quotes hebben geen zin, je zou inderdaad wel typecasting string eraan toe kunnen voegen.
 
Yea Rupie

Yea Rupie

23/03/2011 08:39:51
Quote Anchor link
Dit is echt onzin: $value = "" . mysql_real_escape_string($value) . "";
haal ze ervoor en erna weg?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$value
= mysql_real_escape_string($value);
?>

eventueel nog dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$value
= (string)mysql_real_escape_string($value);
?>
 

23/03/2011 09:16:48
Quote Anchor link
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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$value
= mysql_real_escape_string($value);
?>

eventueel nog dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$value
= (string)mysql_real_escape_string($value);
?>


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!
 
Pim -

Pim -

23/03/2011 09:47:09
Quote Anchor link
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.
 

23/03/2011 09:53:12
Quote Anchor link
Pim - op 23/03/2011 09:47:09:
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).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.