Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Donde debo insertar mysql_real_escape_string en mi código fuente

Estas en el tema de Donde debo insertar mysql_real_escape_string en mi código fuente en el foro de Mysql en Foros del Web. Hola, por motivos de inyeccion de sql y scripts malignos he deciddo intentar validad el formulario de mi libro de visitas, para "escapar"como se dice ...
  #1 (permalink)  
Antiguo 31/10/2010, 15:07
Avatar de Hobby72  
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 0
Donde debo insertar mysql_real_escape_string en mi código fuente

Hola, por motivos de inyeccion de sql y scripts malignos he deciddo intentar validad el formulario de mi libro de visitas, para "escapar"como se dice popularmente caracteres. Necesito como puedo utilizar mysql_real_escape_string y en que parte del codigo de mi libro de visitas lo pudo ubicar para que sea efectivo:

<?php require_once('Connections/libreriavirtualconn.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form3")) {
$insertSQL = sprintf("INSERT INTO visitas (correo, comentario) VALUES (%s, %s)",
GetSQLValueString($_POST['correo'], "text"),
GetSQLValueString($_POST['comentario'], "text"));

mysql_select_db($database_libreriavirtualconn, $libreriavirtualconn);
$Result1 = mysql_query($insertSQL, $libreriavirtualconn) or die(mysql_error());

$insertGoTo = "visitas.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_libreriavirtualconn, $libreriavirtualconn);
$query_categorias = "SELECT * FROM categorias";
$categorias = mysql_query($query_categorias, $libreriavirtualconn) or die(mysql_error());
$row_categorias = mysql_fetch_assoc($categorias);
$totalRows_categorias = mysql_num_rows($categorias);

mysql_select_db($database_libreriavirtualconn, $libreriavirtualconn);
$query_visitas = "SELECT * FROM visitas ORDER BY visitaid DESC";
$visitas = mysql_query($query_visitas, $libreriavirtualconn) or die(mysql_error());
$row_visitas = mysql_fetch_assoc($visitas);
$totalRows_visitas = mysql_num_rows($visitas);
?>
  #2 (permalink)  
Antiguo 01/11/2010, 11:17
Avatar de Hobby72  
Fecha de Ingreso: junio-2009
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Donde debo insertar mysql_real_escape_string en mi código fuente

Si alguien conoce del tema, agradeceria un comentario
  #3 (permalink)  
Antiguo 03/11/2010, 14:36
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: Donde debo insertar mysql_real_escape_string en mi código fuente

A cada variable POST tenes que limpiarla. A todas. Tambien a las numericas. Yo hoy dia tengo esta funcion que uso para todo tipo de valores de formulario:

Código PHP:
Ver original
  1. /* Limpiar cadenas de texto */ 
  2. function limpiar($texto, $numerico = false){
  3.    
  4.     if ($numerico)
  5.         if (is_numeric($texto))
  6.             return $texto;
  7.         else die("Este dato debiera ser numerico: ".fixEncoding(trim(strip_tags($texto))));
  8.        
  9.     else
  10.         return mysql_real_escape_string(fixEncoding(trim(strip_tags($texto))));
  11. }

La de fixEncoding corrige el charset de ser necesario, pero tambien es una funcion creada.

En fin, haces limpiar($_POST['variable']);

Etiquetas: fuentes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.