Foros del Web » Programando para Internet » PHP »

preg_match

Estas en el tema de preg_match en el foro de PHP en Foros del Web. Hola a todos quisiera saber si hago lo correcto, quiero esa funcion para validar que no se ingrese codigo SQL. Código PHP: <?php $x = ...
  #1 (permalink)  
Antiguo 11/01/2013, 11:19
 
Fecha de Ingreso: septiembre-2012
Mensajes: 112
Antigüedad: 11 años, 7 meses
Puntos: 1
preg_match

Hola a todos quisiera saber si hago lo correcto, quiero esa funcion para validar que no se ingrese codigo SQL.

Código PHP:
<?php
$x
="wer dfgg";
function 
detect($c) {
          if(
preg_match('/\s/'$c)){
              return 
false;}
          elseif(
preg_match('/[\'"]/'$c)){
              return 
false;}
          elseif(
preg_match('/[\/\\\\]/'$c)){
              return 
false;}
          elseif(
preg_match('/(and|or|null|not)/i'$c)){
              return 
false;}
          elseif(
preg_match('/(union|select|from|where)/i'$c)){
              return 
false;}
          elseif(
preg_match('/(group|order|having|limit)/i'$c)){
              return 
false;}
          elseif(
preg_match('/(into|file|case)/i'$c)){
              return 
false;}
          elseif(
preg_match('/(--|#|\/\*)/'$c)){
              return 
false;}
          elseif(
preg_match('/(=|&|\|)/'$c)){
              return 
false;}
          else{
              return 
true;}
     }
     
     
     if(
detect($x) == false){echo "Algo anda mal";}
     else{ echo 
"Todo bien";}              

?>
  #2 (permalink)  
Antiguo 11/01/2013, 11:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match

¿Y cómo para qué?

Te digo como pienso yo:

El usuario no debería verse limitado a no escribir ciertas cosas, simplemente porque el programador cree que es por "seguridad", imagina que yo escribo:

Cita:
"I wanna be happy or more relaxed."
Pero tu código no me dejaría, simplemente por incluir una palabra.

Si lo que buscas es implementar seguridad intenta escapar tus consultas, ahí radica la clave, no en bloquear palabras.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/01/2013, 12:08
 
Fecha de Ingreso: septiembre-2012
Mensajes: 112
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: preg_match

Pero en un registro no vas a escribir ese tipo de mensajes, ya que pides nombre etc..
  #4 (permalink)  
Antiguo 11/01/2013, 12:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match

Es lo mismo, eso es seguridad por obscuridad, no es la forma correcta de evitar SQL Inyection.
  #5 (permalink)  
Antiguo 11/01/2013, 12:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match

Cita:
Iniciado por Jennifert Ver Mensaje
Pero en un registro no vas a escribir ese tipo de mensajes, ya que pides nombre etc..
Si, pero si una persona se llama "Nicanor" el simple hecho del "or" arruina todo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/01/2013, 12:20
 
Fecha de Ingreso: septiembre-2012
Mensajes: 112
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: preg_match

en eso tienes razon, entonces cual es la forma correcta #gator?
  #7 (permalink)  
Antiguo 11/01/2013, 12:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: preg_match

Cita:
Iniciado por pateketrueke Ver Mensaje
Si lo que buscas es implementar seguridad intenta escapar tus consultas, ahí radica la clave, no en bloquear palabras.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 11/01/2013, 12:33
 
Fecha de Ingreso: septiembre-2012
Mensajes: 112
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: preg_match

Gracias paketaso!
  #9 (permalink)  
Antiguo 11/01/2013, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: preg_match

O aún mejor usa consultas preparadas y así te evitas cualquier problema

Etiquetas: sql
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 07:58.