|
|
Línea 114: |
Línea 114: |
| {{Actividad| | | {{Actividad| |
| *Modifica la página restringida para ver el usuario y password así como el método usado de autentifiacion}} | | *Modifica la página restringida para ver el usuario y password así como el método usado de autentifiacion}} |
− | ===Usar función header para la autentifiación | + | ===Usar función header para la autentifiación=== |
− | *Modificar el texto de error | + | *La referencia de la función header |
| + | http://es.php.net/manual/es/function.header.php |
| + | *Vamos a usarla para unas acciones concretas |
| + | ;Modificar el texto de error |
| + | *En este caso no vamos a usar el fichero .htaccess |
| + | *Cuando accedemos a una página y no nos hemos identificado aparece un error 401 |
| + | *Vamos a solicitar una autentificación de tipo basic |
| + | *Para ello especificamos la cabecera WWW-Authenticate |
| + | *Ademas de especificar el modo de autentifación ponemos el mensaje que verá el usuario |
| + | <source lang=php> |
| + | header('WWW-Authenticate: Basic Realm="Página de acceso restringido. Necesrias credenciales"'); |
| + | </source> |
| + | *En el caso de que no esté autorizado enviamos un mensaje http de unauthorized, con código 401 |
| + | *El códgio quedaría |
| + | <source lang=php> |
| + | |
| + | header('HTTP/1.0 401 Unauthorized'); |
| + | </source> |
| + | *El código completo quedaría |
| <source lang=php> | | <source lang=php> |
| <?php | | <?php |
Revisión de 11:30 12 nov 2014
|
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas.
|
|
BLOQUE 2 PHP: PROGRACION DE APLICACIONES WEB EN ENTORNO SERVIDOR
¡El servidor te responde
PHP Un lenguaje de script al lado del servidor
Qué es autentificarse
- Por autentificarse vamos a entender un mecanismo por el cual el servidor web puede estar relativamente confiado en que está siendo consultado por una determinada máquina y/o persona
- Por ejemplo podemos visitar esta página y ver diferentes modos en los que piden autentificarse
https://www.tractis.com/login
- contraseña y usuario
- Dni digital
- Certificados digitales de usuario
...
- Nosotros en este tema usaremos el módo de contraseña y usuario. En dos temas posteriores, cuando veamos servicios web usaremos otro sistema como google, igualmente se podría usar la cuenta de facebook o twiter para identificarte.
- La responsabilidad de exigir una clave de acceso puede recaer sobre el servidor web con los módulos de seguridad
- En este caso restringimos el acceso a la página o sitio web
- Otra opción habitual es tener un sitio con cierto contendo y en el sitio dar la posibilidad de identificarse / registrarse.
- A usuarios identificados se les ofrece otro contendio diferente.
Respecto a estos conceptos vamos a trabajar este tema que es el primero de tres aspectos del tema 4
protocolo http vs https
- Este es un concepto importante
- La seguridad del envío de datos es otro aspecto diferente del tema de la autentificación
- En seguridad entre otros aspectos tenemos
- La autentificación mecanismos por los cuales podemos confiar en que quien se ha identificado es conocido para el sistema
- La confidencialidad son mecanismos con los que podemos confiar en que nadie puede ver el contendio de la información ni modificarla durante la transmisión.
- Ambos mecanismos debería de trabajar conjuntamente. Por ejemplo si yo envío una contraseña para identificarse, pero con un sniffer alguien la puede capturar y ver en claro, no coneseguimos nada de seguridad .
- Para la transmisión segura se emplea el protocolo https.
- Este tema se estudia en el módulo de despliegue de aplicaciones web.
- Nosotros usaremos http sin cifrar, pero se insiste en que no es segura la transmisión, pues podría ser objetivo de espía informático.
Autentificación por el servidor web
- Es el propio servidor http quien nos ofrece este método de autentifiación.
- Seguramente ya lo habéis estudiado en despliegue, pero lo vamos a comentar
- El mecanismo es sencillo.
- Definir los usarios con acceso permitido
- Se puede indicar a qué recursos tiene acceso el usuario en concreto
- el código http en caso de acceso restringido es el 401
- El navegador al recigir ese código solicita credenciales
- El servidor recibe estas credenciales y las almacena en sus variables superglobales para futuras solicituds
- Crear la lista de usuarios
- Usamos la herramienta htpasswd para crear un fichero con los usarios y sus contraseñas
http://httpd.apache.org/docs/2.4/es/howto/auth.html
- Este comando tiene una serie de opciones que podemos ver en línea de comandos sin mas que esciribr su nombre
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don\'t update file; display results on stdout.
-m Force MD5 encryption of the password (default).
-d Force CRYPT encryption of the password.
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
-D Delete the specified user.
On other systems than Windows, NetWare and TPF the '-p' flag will probably not work.
The SHA algorithm does not use a salt and is less secure than the MD5 algorithm.
- importante es la opción -c para crear el fichero
- Para incorporar nuevos usuarios se escribe sin opcion y se añaden
- Por seguridad es importante añadir el fichero en una ubicación fuera del servidor web.
Actividad
crea un fichero llamado misUsuarios y añade 3 usuarios maria/maria nieves/nieves sara/sara
|
- Indicar los recursos restringidos al servidor apache, la mejor opción (no la única)es crear un directorio .htacess, en le directorio en el que se encuentren los recursos compartidos
- Para indicar los recursos restringidos usarmos las siguientes directivas ya conocidas
- AuthName Nombre de dominio de la authentificación
- AuthType Tipo de autentificación Basic y más segura Dijest
- AuthUserFileRuta del fichero de los usuarios con permiso
- Require valid-user o usuarios concretos de la lista que sí que tendrán acceso al recuros
- Ademas en el fichero de confituración de apache debemos activar la directiva AllowOverride
http://httpd.apache.org/docs/2.4/es/mod/core.html#allowoverride
Actividad
Crea un sencillo sitio web que me rediriga a 4 páginas:
Información General : Tendrá acceso todo el mundo
Información restirngida: Sólo tendŕan acceso maría nieves y sara
Información Sara : Tendrá acceso solo el usuario sara
Información de grupo : Tendrá acceso los usuarios maría y nieves
|
PHP accediendo a información http
- Desde el código de php podemos acceder a la informción facilitada por el servidor php.
- La matriz asociativa variable superglobal $_SERVER contiene esta información
- Concretamente los índices
- PHP_AUTH_USER Es el nombre del usuario
- PHP_AUTH_PW Es la password del usuario
- PHP_TYPE Es el tipo de seguridad utilizado
Actividad
- Modifica la página restringida para ver el usuario y password así como el método usado de autentifiacion
|
- La referencia de la función header
http://es.php.net/manual/es/function.header.php
- Vamos a usarla para unas acciones concretas
- Modificar el texto de error
- En este caso no vamos a usar el fichero .htaccess
- Cuando accedemos a una página y no nos hemos identificado aparece un error 401
- Vamos a solicitar una autentificación de tipo basic
- Para ello especificamos la cabecera WWW-Authenticate
- Ademas de especificar el modo de autentifación ponemos el mensaje que verá el usuario
header('WWW-Authenticate: Basic Realm="Página de acceso restringido. Necesrias credenciales"');
- En el caso de que no esté autorizado enviamos un mensaje http de unauthorized, con código 401
- El códgio quedaría
header('HTTP/1.0 401 Unauthorized');
- El código completo quedaría
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic Realm="Contenido restringido"');
header('HTTP/1.0 401 Unauthorized');
echo "Usuario no reconocido!";
exit;
}
?>
|
|