Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/01/2010, 11:09
Avatar de Kamae
Kamae
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona (Catalunya)
Mensajes: 307
Antigüedad: 16 años
Puntos: 13
Respuesta: Seguridad para mi pagina web

Buenas

Recibirías más ayuda si hubieras sido un poco más explícito en el tipo de web, en el lenguaje que está (sólo HTML? tiene PHP? formularios?)...

Suponiendo que uses PHP y formularios, lo primero es blindar todos los datos con htmlspecialchars() y con addslashes() al meterlos en la Base de Datos.

htmlspecialchars() sirve por si te meten en el formulario código en HTML (por ejemplo un <meta> que redireccionara a otra página). Con esta función trata esos datos como cadena de texto sin reconocer etiquetas HTML.

addslashes() es lo mismo pero a nivel de Base de Datos, si te ponen una comilla ( ' ) que es la que se usa para cerrar sentencias de SQL y seguidamente de la comilla una instrucción en SQL, podrían hacer lo que quisieran. Entonces lo que hace es tratar también la comilla como una comilla de texto, no como instrucción SQL. Verás que si luego recuperas datos de la BBDD saldrá por ejemplo "L\'Hospitalet de Llobregat". Para que muestre sin \ tienes que usar la función stripslashes().

Por ejemplo:
Código PHP:
$dato1=htmlspecialchars(addslashes($dato1)); // Lo blinda para ponerlo luego en BBDD
$dato2=htmlspecialchars(addslashes($dato2)); // Lo blinda para ponerlo luego en BBDD
// Insertas estos datos blindados en la BBDD
...
...
echo 
stripslashes($dato1); // Quita el blindado para q se lea correctamente
echo stripslashes($dato2); // Quita el blindado para q se lea correctamente 
Luego es recomendable que si trabajas con formularios uses el método POST antes que el GET (¿diferencias?), o almenos dependiendo de lo delicados que sean los datos, ya que por GET se ven arriba en la barra de navegación pero con POST no.

Todas las contraseñas que guardes en Bases de Datos codifícalas antes con MD5. Esto en PHP es tan fácil como usar la función md5(). Luego sólo tienes que tener en cuenta que cuando el usuario ponga la contraseña, la codifiques en md5 también para que pueda ser comparada con la de la BBDD. Por ejemplo:

Código PHP:
// Guardamos una contraseña en la BBDD
$contrasenya=md5($contrasenya);
...
...
// Comparamos si la contraseña que introduce un usuario es correcta
// Recuperamos la contrasenya de la Base de Datos, $contrasenyaBBDD
if( md5($_POST["contrasenyaEntradaPorElUsuario"]) == $contrasenyaBBDD ){
   
// Correcto
}else{
  
// Incorrecto

Y finalmente, en tu servidor donde esté la web, quitar de la parte pública todos los archivos de configuración. Los archivos de configuración van en la parte privada, y los ficheros de la parte pública pueden acceder a todo el disco (incluso la parte privada). En cambio, si pones la configuración de tu servidor en la parte pública, está visible para el resto.

Esto es todo lo que se me ocurre ahora mismo, espero que te sirva de ayuda, aunque no sé si te referías a esto..

Saludos!

PD: Si usas otros lenguajes de programación diferentes a PHP, busca la equivalencia de las funciones que mencioné (md5, addslashes, stripslashes, htmlspecialchars...) para el lenguaje que tú uses, en el Google.