Foros del Web » Programando para Internet » PHP »

Duda sobre codigo anti XSS y Sql injection en variables

Estas en el tema de Duda sobre codigo anti XSS y Sql injection en variables en el foro de PHP en Foros del Web. Hola de nuevo foro, tego una duda sobre el uso de un codigo que encontre aqui. En este tema [URL="http://www.forosdelweb.com/f18/funcion-para-evitar-xss-sql-injection-958648/"]http://www.forosdelweb.com/f18/funcion-para-evitar-xss-sql-injection-958648/[/URL] encontre un codigo que modificó ...
  #1 (permalink)  
Antiguo 17/08/2012, 20:50
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 4 meses
Puntos: 3
Duda sobre codigo anti XSS y Sql injection en variables

Hola de nuevo foro, tego una duda sobre el uso de un codigo que encontre aqui.

En este tema [URL="http://www.forosdelweb.com/f18/funcion-para-evitar-xss-sql-injection-958648/"]http://www.forosdelweb.com/f18/funcion-para-evitar-xss-sql-injection-958648/[/URL] encontre un codigo que modificó abimaelrc que sirve contra el XSS

Tambien en youtube encontré este contra la Sql Injection
Código PHP:
<?php 
// De aqui http://www.youtube.com/watch?v=C99RciTgTRA  minuto 7:52

function protect($v){
    
$v=mysql_real_escape_string($v);    
    
$v=htmlentities($vENT_QUOTES);
    
$v=trim($v);
    return(
$v);
    }
?>
No estoy seguro si ese segundo codigo realmente ayuda suficiente contra el Sql Injection.
Por el momento estoy usando el codigo de abimaelrc primero pasandolo con con la funcion Filter_Xss y luego la funcion realEscapeString y por ultimo el protect y funciona bien, no da errores y hace lo que se supone haga

Mi duda es ¿a que variables tengo que pasarle esto?
Segun tengo entendido de lo que lei es que se lo pase todas las funciones que se conecten a la base de datos ya sea que venga de un imput text, checkbox o cualquiera que conecte.

¿estoy en lo cierto?

Otra duda que tengo es ...

si por ejemplo recibo un $_POST o $_GET o cualquier otro y este tiene "codigo maligno" ¿sirve de algo que a eso que reciba le haga un str_replace para quitar signos como " $ { ( ) " o incluso un preg_match en caso de que detecte caracteres no permitidos?
¿ o de todos modos se "activaria" ese codigo malicioso ?
  #2 (permalink)  
Antiguo 18/08/2012, 11:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

Cita:
Iniciado por thetwister Ver Mensaje
Mi duda es ¿a que variables tengo que pasarle esto?
todas las entradas manipulables por usuario dirigidas a una bd por ejemplo un nombre que vas a guardar/consultar/modiicar/ en la bd y ha sido introducido por un usuario en un formulario

Cita:
Iniciado por thetwister Ver Mensaje
si por ejemplo recibo un $_POST o $_GET o cualquier otro y este tiene "codigo maligno" ¿sirve de algo que a eso que reciba le haga un str_replace para quitar signos como " $ { ( ) " o incluso un preg_match en caso de que detecte caracteres no permitidos?
¿ o de todos modos se "activaria" ese codigo malicioso ?
escapa antes de guardarla y antes de mostrar la variable

strip_tags http://php.net/manual/es/function.strip-tags.php
htmlspecialchars http://www.php.net/manual/es/functio...ecialchars.php
htmlentities http://www.php.net/manual/es/function.htmlentities.php
  #3 (permalink)  
Antiguo 27/08/2012, 19:00
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

ok, gracias
Checare esos que dices (strip_tags, etc etc)

Tambien quiero encriptar las contraseñas de los usuarios pues dejarlos en texto plano seria como un tiro al pie , asi que encontre algunos como el md5, sha1 y sha2

En el SHA2 vi que hay 256 y 512

que el codigo me parece es asi

Código PHP:

$pass
="Alguno_con_512";
$s512hash('sha512',$pass); 
Lo que no estoy seguro es si el sha512 sea algo pesado para el servidor, lo bueno es que la pagina no tendra mas de 40 personas usandola por lo que no creo sea tan pesado pero a la vez lei que no era recomendado el sha512 para contraseñas sino con el sha256 o el "blowfish" (algo asi se escribia este ultimo jeje)

¿cual debo usar y que no sea el md5 ni el sha1?

por cierto, aqui una pagina con algunas comparaciones de estos y otros
[URL="http://www.kellermansoftware.com/t-articlestrongesthash.aspx"]PAGINA[/URL]
  #4 (permalink)  
Antiguo 29/08/2012, 02:41
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

la verdad eso que dices de encriptar las contraseñas , es lo correcto , no puedes dejar contraseñas en texto plano , imaginate que un maleante entra en tu bd roba los emails y ademas de eso te roba todas las contraseñas sin encriptar , imaginate lo que puede suceder , mucha gente usa la misma contraseña para todo para el email cuentas en webs etc... algo no recomendable ,, encripta y codifica todos los datos sensibles en la bd . habra datos que tengas que encriptarlos ya que3 nunca se usaran en una vista en html y codifica los que si necesites pasarlo a texto plano un ejemplo muy sencillo y basico

$user = base64_encode('juanito matalascañas');

echo $user;

$mostrar = base64_decode($user);

echo $user;


ahora si guardamos el user en la bd como $user estara codificado en la bd y al seleccionarlo pasamos $mostrar añadiendo la variable que selecciono los datos no $user


respecto a la encriptacion

yo te recomiendo que eches un vistazo a crypt y mcrypt

http://php.net/manual/es/function.crypt.php
http://es.php.net/manual/es/book.mcrypt.php

Última edición por webankenovi; 29/08/2012 a las 08:39
  #5 (permalink)  
Antiguo 30/08/2012, 19:19
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 4 meses
Puntos: 3
Pregunta Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

si lei esos pero me queda la duda de
¿cual forma de encriptar debo usar que sea adecuada para contraseñas, que no sea sha1 ni md5 y sobretodo de un solo sentido ?

la sha256 parece buena pues es de un solo sentido pero se me hace muy larga y quizas pesada para el servidor.

¿cual seria mejor?
  #6 (permalink)  
Antiguo 31/08/2012, 10:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

contra mas larga mas segura y si ademas le añades un sallt con bastantes caracteres sera muy dificil de averiguar o por lo menos tardara bastante tiempo

crypt : No hay función de desencriptado, ya que crypt() utiliza un algoritmo de un solo sentido. te contesta eso a tu pregunta

yo usaria mcrypt

ejemplo de php.net

Código PHP:
Ver original
  1. Ejemplo #1 Ejemplo de mcrypt_encrypt()
  2. <?php
  3.     $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  4.     $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  5.     $key = "Esta es una clave muy secreta";
  6.     $text = "Encuéntrame a las 11 en punto detrás del monumento.";
  7.     echo strlen($text) . "\n";
  8.  
  9.     $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  10.     echo strlen($crypttext) . "\n";
  11. ?>

Última edición por webankenovi; 31/08/2012 a las 10:07
  #7 (permalink)  
Antiguo 31/08/2012, 12:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

Para que puedas entender el concepto de xss te recomiendo esta lectura http://shiflett.org/blog/2006/jan/ad...-escape-string

Pero en simples terminos solo necesitas usar en la librería de mysql (no recomendada porque va a estar obsoleta) la función mysql_real_escape_string en MySQLi con mysqli::real_escape_string y si es con PDO usar los bindValue o bindParam.

La idea de la función que indicaste es evitar atacan con consultas a la base de datos, sino que usen los campos que nosotros hemos indicado, cualesquiera de las funciones que te indiqué son las necesarias para evitar esta primera parte del ataque.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 02/09/2012, 14:27
Avatar de thetwister  
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

ya veo, gracias por sus respuestas

creo que usare el mysql_real_escape_string pues todo está hecho en mi pagina por la libreria mysql, pero en un futuro cercano (tan pronto como sea posible) la cambiare por el uso de mysqli.

leí la pagina del 1er enlace que pusiste abimaelrc pero me queda una duda que puse en el principio.

Imaginando que de x manera paso una \ o $ o lo que sea, en el transcurso en el que se va a enviar el dato a la base de datos, el preg_match no ayuda en algo si le ordeno que solo permita ciertos caracteres nada mas, esto antes de enviar a la BD ?

Última edición por thetwister; 02/09/2012 a las 14:38
  #9 (permalink)  
Antiguo 02/09/2012, 14:41
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

Muy interesante todo lo que he leido aqui, he entendido que debo usar el mysql_real_escape_string en cualquier formulario donde el usuario ingrese datos a mi base de datos, la duda que tengo es: en mi pagina tengo una encuesta que solo utiliza botones select en donde solo pueden escoger numeros del 0 al 10, es necesario que utilice esta funcion para proteger el envio de estos numeros? o aqui no es necesario? igualmente tengo consultas a la base de datos para generar gráficas, aqui tambien seria necesario proteger las consultas mysql?
  #10 (permalink)  
Antiguo 02/09/2012, 15:47
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: Duda sobre codigo anti XSS y Sql injection en variables

ANDRESDD, la primera regla de seguridad es No confiar en las acciones del usuario, porque fácilmente pueden modificar tu formulario y enviarlo para buscar errores.
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 03/09/2012, 12:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Duda sobre codigo anti XSS y Sql injection en variables

Asi es, yo puedo modificar facilmente cualquier formulario con tan solo usar el inspector de elementos de google o firefox y enviar otrovalor que no esta en el formulario. Regla de oro nunca, nunca pero nunca se me olvido decir nunca, te dije nunca alguna vez por si acaso nunca y repito para que se les quede nunca confiez en lo que envia un usuario.

PD: NUNCA
PD2: NUNCA...
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: html, injection, sql, variables, 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 22:22.