Foros del Web » Programando para Internet » PHP »

Evitar inyección "html" en un form?

Estas en el tema de Evitar inyección "html" en un form? en el foro de PHP en Foros del Web. Hola a todos ,estoy atorado con algo de programación pero no se si usar php o javascript. Sucede que tengo un form que muestra estadisticas ...
  #1 (permalink)  
Antiguo 29/10/2008, 16:45
 
Fecha de Ingreso: octubre-2008
Mensajes: 109
Antigüedad: 16 años
Puntos: 0
Evitar inyección "html" en un form?

Hola a todos ,estoy atorado con algo de programación pero no se si usar php o javascript.
Sucede que tengo un form que muestra estadisticas de un bd y ya logro validar ciertos caracteres por eso del sql injections pero haciendo pruebas inserte esto:"<input type="text" name="nombre" size="35" maxlength="60" id" y después de trabajar con el select puede "burlar" esto y en el pop-up donde aparecen mis datos me inserta el campo de texto.
¿Como puedo evitar esto?
Todavía no termino de entender si usar htmlentities o aplicar una función en php

  #2 (permalink)  
Antiguo 29/10/2008, 19:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 102
Antigüedad: 16 años
Puntos: 0
Respuesta: Evitar inyección "html" en un form?

usa el htmlspecialchars o htmlentities para que no inserte eso...
  #3 (permalink)  
Antiguo 29/10/2008, 20:58
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar inyección "html" en un form?

Usar javascript es darle al cliente (visitante) total control sobre nuestro sistema de validación. Javascript tiene la ventaja de ejecutarse en el navegador directamente, haciendo que el proceso sea (mucho) más rápido que enviar una petición al servidor. Sin embargo, sólo debe usarse como un accesorio útil, y no como algo definitorio. Siempre debe ir una validación en el lado del servidor, que tiene la ventaja de que el usuario visitante no podrá modificarla ni quitarla.

Las funciones que das son funciones PHP. También tienes strip_tags().

Saludos,
  #4 (permalink)  
Antiguo 30/10/2008, 09:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 109
Antigüedad: 16 años
Puntos: 0
Respuesta: Evitar inyección "html" en un form?

Entonces sería bueno que implementará dicha función en php para evitar que pudieran insertar otra cosa?
Voy a probar ....
  #5 (permalink)  
Antiguo 30/10/2008, 09:47
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 2 meses
Puntos: 49
Respuesta: Evitar inyección "html" en un form?

ojo hay cosas que si bien en php deberian hacerse por un tema de que el cliente vea la validacion sin recargar la web caso ajax por ejemplo existe la etiqueta noscript en ella puedes hacer que el cliente si quiere ver el formulario necesariamente tenga que activar JS ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #6 (permalink)  
Antiguo 30/10/2008, 11:31
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Evitar inyección "html" en un form?

Que tal 0le0...

Yo jamás he utilizado la funcion "htmlspecialchars o htmlentities".
Las validaciones que yo hago se basan en expresiones regulares, las utilizo en javascript (solo que parte del trabajo se realice en la maquina del cliente) y en el servidor (validacion de datos definitiva)... Te puedo decir que hacer esto es muy laborioso y frustrante en ocasiones porque sientes que no avanzas...

Las validaciones con expresiones regulares te permiten validar solo los caracteres que tu permitas que se introduzcan... solo letras, solo numeros, tal vez algun simbolo de interés como las letras acentuadas...

En lo personal te las recomiendo para validar el "input" de un formulario.
  #7 (permalink)  
Antiguo 31/10/2008, 13:00
 
Fecha de Ingreso: octubre-2008
Mensajes: 109
Antigüedad: 16 años
Puntos: 0
Respuesta: Evitar inyección "html" en un form?

Para la validación tengo esto pero esta en js
Código:
<script>

function validate(cctt) {
  var valid = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz_"
  var ok = "yes";
  var temp;
  for (var i=0; i<cctt.value.length; i++) {
      temp = "" + cctt.value.substring(i, i+1);
      if (valid.indexOf(temp) == "-1") ok = "no";
      }
	  if (ok == "no") {
         alert("Teclee solo caracteres que sean letras o números." + '\n' +
         "El caracter no válido es " + temp + ".");
         cctt.focus();
         cctt.select();
      }
}
Pero siento que se puede mejorar
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 12:06.