Foros del Web » Programando para Internet » PHP »

preg_match para ipedir insercion codigos html en textarea

Estas en el tema de preg_match para ipedir insercion codigos html en textarea en el foro de PHP en Foros del Web. Hola Tengo problemas en mi form porque me atacaron con XSS y quiero evitar la entrada de codigo a mi campo comentarios Como puedo hacer ...
  #1 (permalink)  
Antiguo 09/04/2014, 10:29
Avatar de JinSunMi  
Fecha de Ingreso: octubre-2006
Ubicación: Lima
Mensajes: 101
Antigüedad: 18 años
Puntos: 0
preg_match para ipedir insercion codigos html en textarea

Hola
Tengo problemas en mi form porque me atacaron con XSS y quiero evitar la entrada de codigo a mi campo comentarios

Como puedo hacer este if correctamente con preg match para que no admita códigos html, javascript en mi campo $Comentarios

$Comentarios=$_POST['comentarios'];

Lo que les pido, son las expresiones regulares (está vacío" para impedir la inserción de código
y crear esta función de manera correcta

algo similar a esto que impida html y javascript
@<[\/\!]*?[^<>]*?>@si


Esto es para completar y/o mejorar
Código PHP:
{ if (preg_match(''$Comentarios)) 
echo 
"se admite solo texto y número, retire su código. Este mensaje no ha sido enviado"

Qué solo en el caso de encontrar etiquetas html o javascript dentro del campo $Comentarios , impida el paso a enviar los datos del form, caso contrario prosiga



Muchas gracias por su ayuda
Jin
__________________
Veterinaria por pasión, webmaster por placer
  #2 (permalink)  
Antiguo 09/04/2014, 11:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: preg_match para ipedir insercion codigos html en textarea

Usando:
Código:
/^[a-z0-9]+$/
limitas al texto que solo acepte letras y números.
  #3 (permalink)  
Antiguo 09/04/2014, 11:47
Avatar de JinSunMi  
Fecha de Ingreso: octubre-2006
Ubicación: Lima
Mensajes: 101
Antigüedad: 18 años
Puntos: 0
Respuesta: preg_match para ipedir insercion codigos html en textarea

GatorV
Este es el código con lo que me diste

Código PHP:
if (preg_match('/^[a-z0-9]+$/',$Comentarios))
{
     echo 
'<b>SPAM. No puedes incluir direcciones web en el área para comentarios,<br>por favor retíralas para poder enviar el mensaje.</b>';
exit;
}else{ 
}
mail($destino,$asunto,$cuerpo,$headers);
?> 
Pero hice la prueba en mi form y envía URL y también http:// , no delimita el campo $Comentarios a texto y números

Hice yo algo mal o es que falta algo al código que me diste?
__________________
Veterinaria por pasión, webmaster por placer
  #4 (permalink)  
Antiguo 09/04/2014, 12:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: preg_match para ipedir insercion codigos html en textarea

preg_match te devuelve 1, si hace match, 0, si no hay matches, y false si ocurrió un error, por lo que deberías de probar algo así:

Código PHP:
Ver original
  1. if (!preg_match(...)) {
  2.      die("solo carácteres alfanuméricos y números");
  3. }
  #5 (permalink)  
Antiguo 09/04/2014, 12:51
Avatar de JinSunMi  
Fecha de Ingreso: octubre-2006
Ubicación: Lima
Mensajes: 101
Antigüedad: 18 años
Puntos: 0
Respuesta: preg_match para ipedir insercion codigos html en textarea

Perdona una vez más pero puse
Código PHP:
if (preg_match('/^[a-z0-9]+$/',$Comentarios))
{
die(
"solo carácteres alfanuméricos y números");
exit;
}else{ 
}
mail($destino,$asunto,$cuerpo,$headers);
?> 
Y todavía pasan las URL y los enlaces a la función mail y se envía el form

Este código impide los enlaces html dentro del campo $Comentarios pero no las URL (www.google.com) que si las envía al correo
Código PHP:
 
$Comentarios
=$_POST['comentarios'];
if (
preg_match('/\<a(.*)\>(.*)\<\/a\>/i',$Comentarios))
    {
    echo 
"<b>No se permiten direcciones web ni enlaces, por favor retírelas. Su mensaje no ha sido enviado</b>";
 exit;
}else{ 
}
mail($destino,$asunto,$cuerpo,$headers);
?> 
¿qué debo hacer para evitarlo y además que incluya otras palabras, como "diezepan" "paracetamol" y diversos nombres de fármacos con los que me atacan el form?
__________________
Veterinaria por pasión, webmaster por placer
  #6 (permalink)  
Antiguo 10/04/2014, 07:51
Avatar de JinSunMi  
Fecha de Ingreso: octubre-2006
Ubicación: Lima
Mensajes: 101
Antigüedad: 18 años
Puntos: 0
Respuesta: preg_match para ipedir insercion codigos html en textarea

Este tema no ha sido solucionado

La ayuda que solicito son expresiones regulares para preg_match que puedan usarse para no permitir inserción de códigos javascript, html, style en mi campo $comentarios de mi form

Gracias
__________________
Veterinaria por pasión, webmaster por placer
  #7 (permalink)  
Antiguo 12/04/2014, 05:35
 
Fecha de Ingreso: abril-2014
Ubicación: Canarias!
Mensajes: 150
Antigüedad: 10 años, 7 meses
Puntos: 10
Respuesta: preg_match para ipedir insercion codigos html en textarea

Cita:
Iniciado por GatorV Ver Mensaje
preg_match te devuelve 1, si hace match, 0, si no hay matches, y false si ocurrió un error, por lo que deberías de probar algo así:

if (!preg_match(...)) {
die("solo carácteres alfanuméricos y números");
}
Realmente el tema si fue resuelto, la expresión regular de GatorV es la correcta, ya que solo permite cifras y letras. Pero debes poner el "!" para que te funcione, o de otra manera (la recomendable es la de gator)

Código PHP:
<?php
$Comentarios
='www.google.com';
if (
preg_match('/^[a-z0-9]+$/',$Comentarios) ==0)
    {
    echo 
"<b>No se permiten direcciones web ni enlaces, por favor retírelas. Su mensaje no ha sido enviado</b>";
 exit;
}else echo 
'hi';
Mira aquí el ejemplo funcionando: http://ideone.com/IU6iT1

un saludo

Etiquetas: preg_match
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 13:41.