Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/01/2004, 14:08
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

La pagina PHP mas segura es aquella que guardas en un diskette que metes en una caja fuerte y tiras las llaves a un estanque con pirañas

Bueno, ahora mas en serio. Si se puede hacer una sitio web seguro, con una combinacion de configuracion del servidor, configuracion de la conexion y buena programacion.

1.- Configuracion del servidor: Si el servidor donde alojamos la web no es seguro, por mucho que hagamos bien la programacion, siempre va a ser inseguro. Por ejemplo, en los alojamientos compartidos, si todos tienen acceso a la carpeta donde se almacenan las sesiones, todos podran ver los datos almacenados. Normalmente esta configuracion corresponde a los administradores del alojamiento.

2.- Configuracion de la conexion: Es mucho mas seguro realizar la conexion entre el cliente y el servidor mediante SSL, lo que implica tener alojada tu web en un servidor HTTPS. Con este protocolo, los datos entre el navegador y el servidor viajan encriptados.

3.- Buena programacion: Realizar una programacion robusta ayuda a la seguridad. Tener un codigo que sabes que no va a fallar, o que cuando falla, lo hace controladamente, es un seguro. Y la paranoia tambien ayuda. Comprobar el tipo y origen de los parametros externos, eliminar caracteres peligrosos, inicializar varaibles, etc. ayudan a evitar los ataques mas "basicos" (como el SQL inyection).

El manual tiene una seccion dedicada a la seguridad: http://www.php.net/manual/en/security.php

Y he dejado para lo ultimo la configuracion mas importante: la configuracion del usuario Todo sistema es tan seguro como su eslabon mas debil. Si tienes un usuario que da su informacion (login y pass) a cualquier email que parezca provenir de tu web, es una victima facil de la "ingenieria social".

Saludos.

PD: Sobre lo de $sam o $_GET['sam'], la diferencia es que $sam puede ser $_GET['sam'], $_POST['sam'], $_COOKIE['sam'], $_SESSION['sam'], $_ENV['sam'] o $_SERVER['sam']; mientras que $_GET['sam'] solo puede ser $_GET['sam']. Ten en cuenta que no hace falta ser muy habil para crear una peticion HTTP (como la que hace un navegador) preparada especialmente para "crackear" tu web.
__________________
Josemi

Aprendiz de mucho, maestro de poco.