Foros del Web » Programando para Internet » PHP »

Escapar palabras concretas

Estas en el tema de Escapar palabras concretas en el foro de PHP en Foros del Web. Hola a todos. Estoy haciendo una aplicación con PHP y MySql y, entre otras cosas, me he propuesto una buena seguridad. Consciente de la existencia ...
  #1 (permalink)  
Antiguo 20/04/2009, 17:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Escapar palabras concretas

Hola a todos.

Estoy haciendo una aplicación con PHP y MySql y, entre otras cosas, me he propuesto una buena seguridad.
Consciente de la existencia de la inyección Sql pretendo hacer una función que me escape una serie de palabras definidas.
Estas palabras predefinidas estarían contenidas en un array, y podrían ser Select, Drop, etc. Entre ellas las comillas dobles y simples.

He probado diferentes métodos pero ninguno me llega a contentar.

Hay algún método que añada una contrabarra (\) delante de cada palabra que se encuentre contenida en una string y que coincida con el array nombrado arriba?

Y, viceversa...
Es decir, una vez guardada la cadena en la BD de MySql con sus "palabras peligrosas" escapadas, a la hora de mostrarlas a los visitantes de la web, que no aparezcan con la contrabarra.

Sí, puedo cargarme todas las contrabarras con un replace, pero pretendo quitar sólo aquellas que están escapando esas palabras, manteniendo así otras contrabarras que pudieran aparecer en el texto de forma "natural".

Muchas gracias a todos y un saludo.
  #2 (permalink)  
Antiguo 20/04/2009, 17:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Escapar palabras concretas

PHP cuenta con una función para evitar la inyeccion SQL:
http://www.php.net/manual/en/functio...ape-string.php
  #3 (permalink)  
Antiguo 20/04/2009, 17:34
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Escapar palabras concretas

Cita:
Iniciado por Ronruby Ver Mensaje
PHP cuenta con una función para evitar la inyeccion SQL:
http://www.php.net/manual/en/functio...ape-string.php
Hola:

Ya había visto esa función, pero creo que no "mata" algunos tipos de inyecciones.
Por ejemplo del tipo ".... ; Drop Table table_name"

Si eso lo metes en un campo de texto (eso o una más currada) te rompe la tabla... no?
  #4 (permalink)  
Antiguo 20/04/2009, 17:35
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Escapar palabras concretas

Nope, no funcionara. Si quieres haz unas cuantas pruebas.
  #5 (permalink)  
Antiguo 20/04/2009, 17:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 102
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Escapar palabras concretas

lo q debes anular son los ; porq es el delimitador por default de mysql ademas de algunas otras cosillas pero si lo que haces primero es depurar la sentencia antes de mandarla yo lo que hago es algo asi

$var=" ' ".$_post['data']." ' ";

con esto pueden mandar drop o lo que quieran que el sql lo tratara como texto bueno eso creo hasta el momento no han podido hacerme una ataque saludos
  #6 (permalink)  
Antiguo 20/04/2009, 17:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Escapar palabras concretas

Cita:
Iniciado por Ronruby Ver Mensaje
Nope, no funcionara. Si quieres haz unas cuantas pruebas.
Voy a hacer pruebas, sí!

Si me rompo las tablas tendrás que defenderte ante el pueblo, eh? Jejeje...

Muchas gracias por la ayuda!
  #7 (permalink)  
Antiguo 20/04/2009, 17:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Escapar palabras concretas

Cita:
Iniciado por talcualvip Ver Mensaje
lo q debes anular son los ; porq es el delimitador por default de mysql ademas de algunas otras cosillas pero si lo que haces primero es depurar la sentencia antes de mandarla yo lo que hago es algo asi

$var=" ' ".$_post['data']." ' ";

con esto pueden mandar drop o lo que quieran que el sql lo tratara como texto bueno eso creo hasta el momento no han podido hacerme una ataque saludos
Hola:
No entiendo muy bien qué consigues con eso...

Gracias por responder!
  #8 (permalink)  
Antiguo 20/04/2009, 17:57
 
Fecha de Ingreso: diciembre-2008
Mensajes: 102
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Escapar palabras concretas

con eso lo que le dices es q todos los datos que van entrando al mysql son datos de tipo string y y por lo tanto no existira problemas porque este no ejecutara el codigo sql que este presente en dentro de las ' ' comillas simples bueno a mi funca no se a los demas saludos
  #9 (permalink)  
Antiguo 20/04/2009, 17:59
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Escapar palabras concretas

Cita:
Iniciado por talcualvip Ver Mensaje
con eso lo que le dices es q todos los datos que van entrando al mysql son datos de tipo string y y por lo tanto no existira problemas porque este no ejecutara el codigo sql que este presente en dentro de las ' ' comillas simples bueno a mi funca no se a los demas saludos
Pero, si pongo en tu formulario:

' OR 1=1;# tu consulta podria quedar como (ejemplo):

SELECT * FROM users WHERE user='admin' AND password='' OR 1=1;#'

A menos que magic_quotes_gpc este activado.
  #10 (permalink)  
Antiguo 20/04/2009, 18:08
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Escapar palabras concretas

@Ronruby
Estoy mirándome la mysql_real_escape_string y veo que tiene su mayor efecto sobre las comillas dobles o simples. Pero... Existe alguna Sql Injection que no use comillas?
  #11 (permalink)  
Antiguo 20/04/2009, 18:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Escapar palabras concretas

por lo que yo entiendo, mientras estén bien formadas las comillas no debe haber problema alguno....

solo, al salirse de los limites de las comillas es cuando se puede lograr una inyección...

esto es mas fácil en sitios programados por inexpertos, que usan las variables del formulario sin protección alguna.... así si es mucho mas sencillo atacar, no?


suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 14:52.