Foros del Web » Programando para Internet » PHP »

Necesito ideas con Funcion de seguridad

Estas en el tema de Necesito ideas con Funcion de seguridad en el foro de PHP en Foros del Web. La cuestión es así: Estoy armando una funcion la cual me evite dolores de cabeza con inyecciones SQL y ataques XSS, lo que arme hasta ...
  #1 (permalink)  
Antiguo 21/08/2012, 20:14
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 2
Pregunta Necesito ideas con Funcion de seguridad

La cuestión es así: Estoy armando una funcion la cual me evite dolores de cabeza con inyecciones SQL y ataques XSS, lo que arme hasta ahora es:

Código PHP:
function MakeMeSafe ($variable) {
    
$variable trim(preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$variable));
    
$variable stripslashes($variable);
    
$variable strip_tags($variable);
    
$variable mysql_real_escape_string($variable);
    return 
$variable;

pero SQL REGCASE esta deprecada y no encuentro una alternativa, tambien necesito que me orienten si esta bien lo que hice y si se les ocurre algo para agregar, dado que esto nos sirve a todos espero su colaboracion!
Un abrazo!
__________________
@vindt89
  #2 (permalink)  
Antiguo 21/08/2012, 20:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Necesito ideas con Funcion de seguridad

Con mysql_real_escape_string() evitas las inyecciones SQL, no importa si incluyen esas palabras especiales, de hecho, tu función te dará más problemas que soluciones, porque si tienes una frase como "you've got an email from mysite" se eliminará from que no representa peligro.

Para evitar ataques XSS busca el aporte de GatorV aquí mismo en FDW.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/08/2012, 20:38
 
Fecha de Ingreso: febrero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Necesito ideas con Funcion de seguridad

En realidad la función esta pensada para validar datos de formulario inscripción y logueo, no esta pensada para validar datos de form de contacto y demás...
Pero voy a tomar en cuenta lo que mencionas... y voy a buscar el aporte de GatorV as{i veo que puedo sacar. Desde ya muchas gracias por contestar...
__________________
@vindt89
  #4 (permalink)  
Antiguo 21/08/2012, 21:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Necesito ideas con Funcion de seguridad

Yo te recomendaría que mejor uses PDO o MySQLi y uses prepared statements, así te vas a evitar muchos problemas con SQL Inyection, solo es escapar las variables para evitar XSS.
  #5 (permalink)  
Antiguo 21/08/2012, 22:03
 
Fecha de Ingreso: abril-2010
Mensajes: 31
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Necesito ideas con Funcion de seguridad

La que yo uso va así:

Código PHP:

function prepare($query$params){
   
//esta linea pone las comillas a todos los campos que son de texto en el query
   
$query str_replace("%s""'%s'"$query); 
   
$clean_params = array();
    
//cada parametros lo escapamos y lo metemos en el array limpio
    
foreach($params as $value){
        
$clean_params[] = mysql_real_escape_string($value);
    }
    
//vsprintf va a intercambiar los %s, o %d con los parametros que le mandamos
    
return vsprintf($query$clean_params);

La idea es mandarle el query como un string de formato y un array con los parámetros, de esta manera:

Código PHP:
$conn mysql_connect();
$id $_GET['id'];
$nombre $_GET['nombre'];

$query prepare("SELECT * FROM `tabla` WHERE id = %d OR nombre = %s",
               array(
$id$nombre));

mysql_query($query$conn); 

Etiquetas: inyección, seguridad, sql, xss
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 23:30.