Que tal, es mi primer post aca, tengo la siguiente duda.
Quiero evitar inyecciones sql, previamente estaba usando esta funcion que utilizan los foros SMF:
Código:
<?php
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}
$_POST=addslashes__recursive($_POST);
$_GET=addslashes__recursive($_GET);
$_REQUEST=addslashes__recursive($_REQUEST);
$_SERVER=addslashes__recursive($_SERVER);
$_COOKIE=addslashes__recursive($_COOKIE);
?>
Luego me dijeron que lo recomendable es usar mysql_real_escape_string, por lo que cambie a esta funcion:
Código:
<?php
function mysql_escape($cadena) {
if(get_magic_quotes_gpc() != 0) {
$cadena = stripslashes($cadena);
}
return mysql_real_escape_string($cadena);
}
?>
Utilice la funcion mysql_escape() para cada post y get.
Mi duda es la siguiente, con el siguiente codigo testeo si es vulnerable a inyecciones sql:
Código:
<?
if(!isset($_GET["inyeccion"])){
header("location: ?inyeccion='");
} else {
echo 'Tu servidor ';
if($_GET["inyeccion"] != "'")echo 'no ';
echo 'tiene problemas de inyección';
}
?>
..el problema es que con la funcion de los foros SMF me dice que no tiene problemas de inyeccion, en cambio usando mysql_real_escape_string() si tiene problemas. Tengo entendido que no puedo usar ambas funciones ya que harian lo "mismo", entonces como puedo hacer para usar mysql_real_escape_string() y que no sea vulnerable a inyecciones sql?
No se si se entendio, espero que si.
Gracias.