Ver Mensaje Individual
  #45 (permalink)  
Antiguo 17/04/2013, 09:47
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: seguridad web

CAPITULO 4

Permisos y roles

- esta vez vamos a proteger aun mas los archivos dandoles permisos y roles segun el usuario. un sistema basico

- 1 vamos a crear los permisos y roles

Código PHP:
Ver original
  1. <?php
  2.  
  3. // invitado = 0
  4. // logueado , usuario normal = 1
  5. // logueado , usuario administrador = 2
  6.  
  7.  
  8. // primero en la base de datos debemos guardar esos roles segun el usuario en el momento del registro o manualmente
  9. // a poder ser codificada o hasheada por si alguien accede a la base de datos no sepa el estatus de los usuarios , aunque podria intuirlo pero bueno . .
  10.  
  11. // por defecto los user tendran un rol 1
  12.  
  13. INSERT INTO user (rol) VALUES (sha1('1'.'salt_rol'))
  14.  
  15. // ahora en el login seleccionaremos el rol y lo guardaremos en una session
  16.  
  17. SELECT rol FROM user
  18.  
  19. $_SESSION['ROL'] = $row['rol'];
  20.  
  21.  
  22. ?>

- 2 ya en el script de permisos.php , este se ha de incluir en todas las paginas

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_SESSION['ROL']))
  4. {
  5.     switch($_SESSION['ROL'])
  6.     {
  7.         case sha1('1'.'salt_rol'):
  8.         $user['rol'] = 'usuario';
  9.         break;
  10.  
  11.         case sha1('2'.'salt_rol'):
  12.         $user['rol'] = 'administrador';
  13.         break;
  14.  
  15.         default:
  16.         $user['rol'] = 'invitado';
  17.     }
  18. }
  19. else
  20. {
  21.     $user['rol'] = 'invitado';
  22. }
  23.  
  24. ?>

ya tenemos los roles ahora sera cuestion de la pagina los permisos que queramos darles por ejemplo para acceder a logout.php un usuario tiene que estar logueado por lo cual un invitado no podra leer el archivo no es logico que intente acceder un invitado a dicho archivo por lo cual solo tendran acceso usuarios y administradores

logout.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($user['rol'] == 'usuario' || $user['rol'] == 'administrador')
  4. {
  5.  
  6. // validar login
  7. // codigo de logout
  8.  
  9.  
  10. }else{
  11.  
  12. // denegado el acceso para cualquiera que no sea usuario o admnistrador
  13.  
  14. exit('no tienes acceso para ver la pagina');
  15.  
  16. }
  17.  
  18. ?>

no confundir los permisos con las validaciones de login , tambien hay que validar si el usuario es un usuario logueado

ahora otro ejemplo index.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($user['rol'] == invitado|| $user['rol'] == 'usuario' || $user['rol'] == 'administrador')
  4. {
  5.  
  6. // accesible para todos pero aqui se podria dividir contenido para usuarios o invitados
  7.  
  8. if($user['rol'] == 'usuario' || $user['rol'] == 'administrador')
  9. {
  10.  
  11. // contenido para supuestos logueados , por que aun habria que validarlos
  12.  
  13. }
  14. else
  15. {
  16.  
  17. // contenido para invitados
  18.  
  19. }
  20.  
  21. }
  22.  
  23. ?>

ahora si deseas dar pèrmisos de escritura deberas darselo solo a administradores

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($user['rol'] == 'administrador')
  4. {
  5.  
  6. // contenido para escritura
  7.  
  8. }
  9.  
  10. ?>


observaciones : [U]no olvides dar los permisos en tus archivos y directorios en tu hosting [U]

Eso es todo sobre el capitulo 4 , si sabes otras maneras o mejorar lo expuesto o solo deseas mostrar tu opinion por favor exponlo .


Saludos nos vemos nuevamente con el capitulo 5

capitulos

1 - proteger directorios : link http://www.forosdelweb.com/f18/segur...ml#post4410846
2 - manejar errores : link http://www.forosdelweb.com/f18/segur...ml#post4412140
3 - archivo de configuracion : link http://www.forosdelweb.com/f18/segur...ml#post4412159

Última edición por webankenovi; 17/04/2013 a las 10:13