Foros del Web » Programando para Internet » PHP »

textarea para texto con formato

Estas en el tema de textarea para texto con formato en el foro de PHP en Foros del Web. Hola, me gustaría incluir en mi proyecto un formulario como el típico que se puede encontrar en los foros, para introducir elementos como <b>, <i>, ...
  #1 (permalink)  
Antiguo 12/12/2006, 10:56
 
Fecha de Ingreso: noviembre-2006
Mensajes: 30
Antigüedad: 17 años, 5 meses
Puntos: 1
textarea para texto con formato

Hola, me gustaría incluir en mi proyecto un formulario como el típico que se puede encontrar en los foros, para introducir elementos como <b>, <i>, <u>, <img>, <a> y otros elementos html que no causen ningún problema a la hora de introducirlos en una bd para poderlos leer posteriormente.
Sin embargo tengo un problema, no se como hacer para que el script sea 100% seguro y fiable, de tal forma que sea imposible que algún usuario malintencionado realize SQL Injection, ataques XSS, y otros posibles problemas de seguridad que pudiera causar...
No se si habrá alguna plantilla disponible, en tal caso no estaría de más poder indicarlo aquí, pero lo que más me interesa es que alguien pueda explicar el porqué de los posibles agujeros de seguridad en este y otros tipos de formularios y las formas de evitarlos.

Espero que mi petición no sea descabellada.

Muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 13/12/2006, 10:15
 
Fecha de Ingreso: noviembre-2006
Mensajes: 30
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: textarea para texto con formato

Ya se que puede parecer que, salvo el tema de la seguridad que pido en el script, el resto no tiene nada que ver con php sino con javascript y html, pero me gustaría poder crear un sistema completo de insertado de texto con formato evitando los posibles y clásicos problemas que suponen dejar al usuario interactuar con la bd del sistema.

Otro saludo!
  #3 (permalink)  
Antiguo 13/12/2006, 11:17
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: textarea para texto con formato

Fijate si esto te sirve:
http://www.disegnocentell.com.ar/new...los.php?id=131
  #4 (permalink)  
Antiguo 13/12/2006, 13:19
 
Fecha de Ingreso: noviembre-2006
Mensajes: 30
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: textarea para texto con formato

Muchas gracias por la ayuda, la verdad es que es muy sencillo y puede hasta mejorarse con facilidad.
Lo que no se es si estos scrips aseguran la página para evitar el sql injection, xss u otros problemas de seguridad, porque ayuda a insertar texto en la bd con tags especiales, pero debería ser necesario realizar algún tipo de filtro específico para evitar que algun usuario malintencionado introduzca una sentencia sql en el campo no?
  #5 (permalink)  
Antiguo 13/12/2006, 14:48
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: textarea para texto con formato

Bastaría, antes de la inserción, usar funciones como esta para prevenir la inyección:
Código PHP:
<?php
// Aplicar comillas sobre la variable para hacerla segura
function comillas_inteligentes($valor)
{
   
// Retirar las barras
   
if (get_magic_quotes_gpc()) {
       
$valor stripslashes($valor);
   }

   
// Colocar comillas si no es entero
   
if (!is_numeric($valor)) {
       
$valor "'" mysql_real_escape_string($valor) . "'";
   }
   return 
$valor;
}

// Conexion
$enlace mysql_connect('mysql_host''mysql_usuario''mysql_contrasenya')
   OR die(
mysql_error());

// Realizar una consulta segura
$consulta sprintf("SELECT * FROM usuarios WHERE usuario=%s AND password=%s",
           
comillas_inteligentes($_POST['username']),
           
comillas_inteligentes($_POST['password']));

mysql_query($consulta);
?>
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:21.