Foros del Web » Programando para Internet » Javascript »

validar textbox para q no introduzcan etiquetas html

Estas en el tema de validar textbox para q no introduzcan etiquetas html en el foro de Javascript en Foros del Web. Buenas! quiero saber como pued hacer para validar un grupo de textbox que tengo, para que no puedan introducir codigo html (<h1></h1>, <?php ?>,) todas ...
  #1 (permalink)  
Antiguo 07/09/2009, 16:55
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
validar textbox para q no introduzcan etiquetas html

Buenas!

quiero saber como pued hacer para validar un grupo de textbox que tengo, para que no puedan introducir codigo html (<h1></h1>, <?php ?>,) todas esas cosas que pueden atentar contra la seguridad del sitio.

si bien encontre algunas, la verdad es que no solucionan lo qu enecesito. Modifique muchas pero tampoco logre poder hacer andar nada, ya que directamente si copio y pego el codigo html me lo toma a la perfeccion porque no lo introduzco letra a letra.

lo que hize entonces fue, hacer una funcion en javascript para validar en el momento la entrada de "<" ">", y en donde tomo los datos del formulario, una preg_match en php, pero ahora probando me deja pasar algo como "<?php <script type="text/javascript">ACA PONGO ALGO, LO QUE SEA</script> ?>" y lo pasa tal cual lo escribo, entonces ya llegue a un punto en el cual estoy desquiciado porque no se como resolverlo.

si alguien puede ayudar le estaria muy agradecido, y si no hay una respuesta concreta estaria bueno ver si se puede armar algo.

Muchas gracias.
  #2 (permalink)  
Antiguo 08/09/2009, 04:15
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: validar textbox para q no introduzcan etiquetas html

Hola

Podrías usar expresiones regulares

<[^>]+>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 08/09/2009, 07:47
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

buenas, tengo estas dos funciones

esta valida texto.
Código:
function validar(e) { 
    tecla = (document.all) ? e.keyCode : e.which; 
    if (tecla==8) return true;
	patron =/<>/; 
te = String.fromCharCode(tecla);
return !patron.test(te);
}
y esta valida numeros
Código:
function validarnumeros(e) {
    tecla = (document.all) ? e.keyCode : e.which; 
    if (tecla==8) return true;
patron = /\D/;
te = String.fromCharCode(tecla); 
return !patron.test(te); // 6
}

ya con eso creo que tengo la parte en javascript casi completa. ya que en el campo de numeros solo dejo entrar numeros, y en la de texto, dejo entrar cualquier cosa menos "<" y ">", pero cuando lo ingresan copiando y pegando el texto, este pasa tranquilamente, pero bueno, eso lo soluciono facil, cuando recabo la informacion del formulario, le pongo esto.


Código:
$pattern="/\w/";
$subject1=$descripcion2;


if (preg_match($pattern,$subject1)) {
die("<div align=\"center\">Se han encontrado caracteres no validos</div>");
}
Con el \w estoy impidiendo que pasen cualquier cosa que no sea numeros ni letras (nada que no sea Alfanumerico)

con eso me funciona a la perfeccion!
por lo menos todo lo que probe anda bien, si alguien tiene alguna sugerencia, bienvenida sea, sino, ahi tienen el codigo por si alguno tiene un problema similar
  #4 (permalink)  
Antiguo 08/09/2009, 08:55
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: validar textbox para q no introduzcan etiquetas html

Hola,
puedes probar con htmLawed o con HTML Purifier ( mi favorito )

__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #5 (permalink)  
Antiguo 08/09/2009, 11:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: validar textbox para q no introduzcan etiquetas html

Dios!! en ocasiones es como pegarse contra un muro
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 08/09/2009, 12:51
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

Bueno, todo mal, ahora me lo puse a probar a conciencia y veo que no puedo incluir tampoco nada como signos de exclamacion, signos de pregunta, ni nada de nada! (Creo que tampoco puedo poner espacios!!)

asi que bueno, voy a ver eso del htmlpurifier! (Ya se descargo!)
  #7 (permalink)  
Antiguo 08/09/2009, 13:04
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

mmm el primerio medio como que probe la demo on-line y no me gusto para nada, osea le puse esto

<body>
<script type="text/javascript">
alert("das");
</script>
</body>

y me salto el alert! jajaj, me rei tanto que lo llame a mi viejo para que lo venga a ver!

no se si yo me equivoque o es que es muuuuy malo.

el segundo no lo probe porque lo veo un poco mas complicado, ahora si lo termino de probar lo comento

Gracias igual por las respuestas.


y salto el alert! juaz, o yo no lo entendi o es muy malo!

Última edición por kadas99; 08/09/2009 a las 13:36
  #8 (permalink)  
Antiguo 09/09/2009, 05:24
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

el segundo me parece un poco complicado, y ademas no lo pude hacer andar (Me refiero al HTML Purifier). pero seguro que es porque no se como utilizarlo.

algo mas?
  #9 (permalink)  
Antiguo 09/09/2009, 15:48
Avatar de flmn  
Fecha de Ingreso: septiembre-2009
Mensajes: 22
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: validar textbox para q no introduzcan etiquetas html

Podrías hacer un replace de "<" y ">" por "&lt;" y "&gt;". No es una solución muy fina pero es simple y anularía cualquier tag html
  #10 (permalink)  
Antiguo 10/09/2009, 05:54
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

si pero en lugar de hacer el reemplazo por eso lo hago por un caracter vacio, asi no queda eso boyando por ahi!


por ahora me quedo con esto que funciona bastante bien

Código:
$subject1=$descripcion2;
$prohibido = array

('<','body:','>','</','/');


for($i=0;$i<sizeof($prohibido );$i++){
if(strstr($subject1, $prohibido [$i])){
unset($subject1);
die("Se han encontrado caracteres invalidos.");
obviamente antes tengo la funcion javascript que no me permite ingresar "<" ">". en ningun campo.

osea dos filtros. ya si me hacen cagar algo, busco al responsable y me lo empomo.


Gracias por su ayuda, y si les sirve el codigo de arriba, usenlo tranquilos, que por ahora funciona.
  #11 (permalink)  
Antiguo 10/09/2009, 10:58
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: validar textbox para q no introduzcan etiquetas html

no entiendo porque estan discutiendo un codigo php en un foro de javascript
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #12 (permalink)  
Antiguo 10/09/2009, 12:05
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

si te fijas en mi primer post hablo sobre funciones javascript
en el 2do mio ya posteo funciones javascript y php (Esta ultima para mostrar mas o menos que queda armado)
como parece que la funcion en javascript anda bien (Ya que nadie dijo nada al respecto) se siguio el tema con la ultima parte que es php.

a fin de cuentas es como una validacion total en 2 partes.

Por esa razon los ultimos post son de php, pero siguen en el hilo que se empezo como javascript en el foro de javascript
  #13 (permalink)  
Antiguo 19/09/2009, 15:36
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: validar textbox para q no introduzcan etiquetas html

Buenas de nuevo

Ahora tambien se le puede agregar a esta validacion este codigo:

Código:
onpaste="return false"
ya que impide que copien texto dentro de los textbox.


en resumen quedaria asi la validacion.


1) Validacion javascript en el formulario:

Esto se pone va entre <head><script type="text/javascript">ACA EL CODIGO</script></head>

Código:
function validar(e) { 
    tecla = (document.all) ? e.keyCode : e.which; 
    if (tecla==8) return true;
	patron =/<>/; 
te = String.fromCharCode(tecla);
return !patron.test(te);
}
2) En los textbox agregar esto:

Código:
onpaste="return false"
3) En el php que recibe los datos debemos poner esto:

Código:
$subject1=$descripcion2;
$prohibido = array

('<','>');


for($i=0;$i<sizeof($prohibido );$i++){
if(strstr($subject1, $prohibido [$i])){
unset($subject1);
die("Se han encontrado caracteres invalidos.");
Donde $subject1 es la cadena a revisar.

¿Porque?
Todo tiene su explicacion.

en el paso 1) validamos que cuando escriban en el textbox no puedan ingresar "<" ni ">".

Pero... (Siempre los peros son malos ) buscando siempre el error y la maldad, me di cuenta que si copio el codigo malo desde algun archivo .txt y lo pego en el textbox, se ejecuta tal cual lo escribimos! asi que.... faltan cosas... vamos al paso 2.

en el paso 2) lo que hacemos es no dejar al usuario "pegar" nada en nuestros textbox.

y el paso 3) es que si por alguna razon pasa codigo malicioso, lo miramos caracter por caracter en busqueda de "<" y ">", si hay algo de eso, le ponemos un die() y un mensaje. (Con el die hacemos que nada mas se ejecute)


Bueno, espero que a alguien le sirva. un abrazo
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:41.