Foros del Web » Programando para Internet » PHP »

Evitar codigo malicioso en Base de datos

Estas en el tema de Evitar codigo malicioso en Base de datos en el foro de PHP en Foros del Web. Buenas, mi duda es si est bien hecho esto as, ya que uso las 2 funciones una para convertir a entidades html los caracteres como ...
  #1 (permalink)  
Antiguo 15/09/2012, 14:46
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicacin: Uruguay
Mensajes: 1.339
Antigedad: 14 aos, 5 meses
Puntos: 168
Evitar codigo malicioso en Base de datos

Buenas, mi duda es si est bien hecho esto as, ya que uso las 2 funciones una para convertir a entidades html los caracteres como <, >, etc, y otra funcin para escapar de los caracteres que podran afectar la consulta SQL.

No tengo problemas con esto, solo quiero saber que piensan de usar las 2 as, he estudiado la otra funcin muy parecida a htmlspecialchars() que es htmlentities() y creo que no me veo obligado a usarla, creo que con htmlspecialchars() est todo mas que bien.

Cdigo PHP:
Ver original
  1. <?php
  2.  
  3. $conexion = mysqli_connect("localhost","root","") or die(mysqli_error($conexion)); //me conecto a servidor con extension mysqli
  4.  
  5. $base = mysqli_select_db($conexion,"basedeprueba") or die(mysqli_error($conexion)); //selecciono base de datos
  6.  
  7.  //capturo dato y aplico funciones de seguridad sql y para caracteres especiales html
  8. $nombre = htmlspecialchars(mysqli_real_escape_string($conexion,$_POST['nombre']),ENT_QUOTES);
  9. $apellido = htmlspecialchars(mysqli_real_escape_string($conexion,$_POST['apellido']),ENT_QUOTES);
  10. $email = htmlspecialchars(mysqli_real_escape_string($conexion,$_POST['email']),ENT_QUOTES);
  11.  
  12. $inserto = "INSERT INTO tablaprueba (nombre,apellido,email) VALUES('$nombre','$apellido','$email')"; //creo sentencia
  13.  
  14. $ejecuto_consulta = mysqli_query($conexion,$inserto) or die(mysqli_error($conexion));  //ejecuto sentencia
  15.  
  16. mysqli_close($conexion);
  17.  
  18. ?>

Por el momento est funcionando perfectamente, as que ya le queda para otro que quiera como aporte para la seguridad en sus proyectos.

ltima edicin por rodrigo791; 15/09/2012 a las 14:55
  #2 (permalink)  
Antiguo 16/12/2012, 08:30
 
Fecha de Ingreso: septiembre-2010
Ubicacin: Corrientes - Argentina
Mensajes: 37
Antigedad: 13 aos, 7 meses
Puntos: 2
Respuesta: Evitar codigo malicioso en Base de datos

Yo tengo armada esta funcin, que me ha servido mucho en materia de seguridad para filtrar el texto que ingreso a la base de datos, espero te sirva como para tenerla archivada por ah.
Es bastante rudimentaria pero me ha funcionado siempre...
Saludos.

Cdigo PHP:
<?php
function limpiador($texto){
$cod[]='#';
$cod[]='&';
$cod[]='!';
$cod[]=''';
$cod[]='
$';
$cod[]='
%';
$cod[]='
(';
$cod[]='
)';
$cod[]='
*';
$cod[]='
+';
$cod[]='
,';
$cod[]='
-';
$cod[]='
.';
$cod[]='
/';
$cod[]='
:';
$cod[]='
<';
$cod[]='
=';
$cod[]='
>';
$cod[]='
?';
$cod[]='
@';
$cod[]='
[';
$cod[]='';
$cod[]='
]';
$cod[]='
^';
$cod[]='
_';
$cod[]='
`';
$cod
[]='{';
$cod
[]='|';
$cod
[]='}';
$cod
[]='~';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='*';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='';
$cod
[]='Œ';
$cod
[]='œ';
$cod
[]='Š';
$cod
[]='š';
$cod
[]='Ÿ';
$cod
[]='ƒ';
$cod
[]='–';
$cod
[]='—';
$cod
[]='‘';
$cod
[]='’';
$cod
[]='‚';
$cod
[]='“';
$cod
[]='”';
$cod
[]='„';
$cod
[]='†';
$cod
[]='‡';
$cod
[]='•';
$cod
[]='…';
$cod
[]='‰';
$cod
[]='€';
$cod
[]='™';
$cod
[]='<strong>';
$cod
[]='</strong>';
$cod
[]='<em>';
$cod
[]='</em>';
$cod
[]='<br />';
$cod
[]='"';
$cod
[]='"';
$cod
[]='"';


$caracter
[]='#';
$caracter
[]='&';
$caracter
[]='!';
$caracter
[]="'";
$caracter
[]='$';
$caracter
[]='%';
$caracter
[]='(';
$caracter
[]=')';
$caracter
[]='*';
$caracter
[]='+';
$caracter
[]=',';
$caracter
[]='-';
$caracter
[]='.';
$caracter
[]='/';
$caracter
[]=':';
$caracter
[]='<';
$caracter
[]='=';
$caracter
[]='>';
$caracter
[]='?';
$caracter
[]='@';
$caracter
[]='[';
$caracter
[]='\\';
$caracter
[]=']';
$caracter
[]='^';
$caracter
[]='_';
$caracter
[]='`';
$caracter[]='
{';
$caracter[]='
|';
$caracter[]='
}';
$caracter[]='
~';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
*';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
';
$caracter[]='
&#338;';
$caracter[]='œ';
$caracter[]='Š';
$caracter[]='š';
$caracter[]='Ÿ';
$caracter[]='ƒ';
$caracter[]='–';
$caracter[]='—';
$caracter[]='‘';
$caracter[]='’';
$caracter[]='';
$caracter[]='“';
$caracter[]='”';
$caracter[]='„';
$caracter[]='†';
$caracter[]='‡';
$caracter[]='•';
$caracter[]='…';
$caracter[]='‰';
$caracter[]='€';
$caracter[]='™';
$caracter[]='ennegrita';
$caracter[]='finnegrita';
$caracter[]='encursiva';
$caracter[]='fincursiva';
$caracter[]="\n";
$caracter[]="“";
$caracter[]="”";
$caracter[]='"';

$numero=0;

while(
$numero <= 154) { 
    
//explora el array de caracteres uno por uno desde el valor [0] hasta el valor final 128 caracteres        
$texto=str_replace ($caracter[$numero], $cod[$numero], $texto);        
$numero=$numero+1;
}

$textofinal=$texto;

return 
$textofinal;
}
?>
__________________
Si esta vida te da la espalda, siempre puede tocarle el c...
  #3 (permalink)  
Antiguo 16/12/2012, 12:36
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar codigo malicioso en Base de datos

tambien podrias verificar cada dato que vas a guardar sea del tipo que debe de ser por ejemplo

un nombre pues solo puede contener letras por ejemplo , todo lo demas se escapa y/o se verifica que no exista un caracter que no sea letras

apellido lo mismo

y email verifica que sea un email

saludos

ltima edicin por webankenovi; 16/12/2012 a las 13:19

Etiquetas: html, malicioso, mysql, sql, tabla
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms 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 07:37.