Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Marciano_79 en 16 Septiembre 2016, 17:18 pm



Título: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 17:18 pm
Hola estimados… quiero pedir de vuestra ayuda, para poder darle seguridad a una página que tiene un panel de control… para esto he creado un formulario de inicio de sesión, en la cual todo me funciona muy bien (completamente testado) ingreso sin problemas … como así la sesión queda bien cerrada… el problema surge que se puede entrar a la página de admin por la URL saltándose el login solo escribiendo la ruta… me gustaría crear una función que no permita esto y que cuando se intente, este redirija a mi index donde tengo el formulario para iniciar sesión…  la verdad no tengo idea de cómo se hace… he leído de todo pero aun no puedo entender cómo se realiza… favor si alguien puede echarme una mano… dejo mi códigos a usar.

INDEX.PHP (en esta misma página tengo el formulario de ingreso)

Código
  1. sec_session_start();
  2.  
  3. if(isset($_SESSION["username"])){
  4. header("Location: ver.php");
  5. }
  6.  
  7. if(!empty($_POST))
  8. {
  9. $email = mysqli_real_escape_string($cnx,$_POST['email']);
  10. $password = mysqli_real_escape_string($cnx,$_POST['pass']);
  11. $error = '';
  12.  
  13. $sha1_pass = sha1($password);
  14.  
  15. $consulta = "SELECT NOMBRE FROM usuario_admin WHERE EMAIL = '$email' AND PASSWORD = '$sha1_pass'";
  16. $result=$cnx->query($consulta);
  17. $rows = $result->num_rows;
  18.  
  19. if($rows > 0) {
  20. $row = $result->fetch_assoc();
  21. $_SESSION['username'] = $row['NOMBRE'];
  22. $_SESSION['password'] = $row['PASSWORD'];
  23.  
  24. header("location: ver.php");
  25. } else {
  26. $error = "El nombre o contraseña son incorrectos";
  27. }
  28. }
  29.  

FUNCIONES.PHP

Código
  1. function sec_session_start() {
  2.    $session_admin_panel = 'username';  
  3.    $secure = "SECURE";
  4.  
  5.    // detiene javascript al  acceso de la sesion id.
  6.    $httponly = true;
  7.  
  8.    // fuerza la sesion al uso de cookies
  9.    if (ini_set('session.use_only_cookies', 1) === FALSE) {
  10.        header("Location: ../index.php");
  11.        exit();
  12.    }
  13.  
  14.  
  15.    $cookieParams = session_get_cookie_params();
  16.    session_set_cookie_params($cookieParams["lifetime"],
  17. $cookieParams["path"],
  18. $cookieParams["domain"],
  19. $secure,
  20. $httponly);
  21.  
  22.  
  23.    session_name($session_admin_panel);
  24.  
  25.    session_start();            // inicia la sesion
  26.    session_regenerate_id();    // regenera la sesion.
  27. }
  28.  

Estos son los archivos que manejo hasta el momento, pero como decía, necesito una función que proteja el acceso a la página ver.php y que obligué hacer login… como puedo hacer esto? Muy agradecido de antemano a quien me quiera ayudar.. gracias.!


Título: Re: Protejer página con php
Publicado por: engel lex en 16 Septiembre 2016, 17:29 pm
En cada sección de la web debes verificar si la sesión se inició apropiadamente, si no, header redirect + exit()


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 17:44 pm
Hola gracias por responder.. lo que me indicas lo comprendo pero nose como crear en si la funcion.. intento crear algo así pero se que no estoy ni cerca..

FUNCIONES.PHP

Código
  1. function login_check($cnx) {
  2.  
  3.    if (isset($_SESSION['username'], $_SESSION['password']) == true) {
  4.        header("Location: ver.php");
  5.        exit();
  6. }else {
  7.           header("Location: index.php");
  8.        exit();
  9.       }
  10. }

y en la pagina VER.PHP

Código
  1. if (login_check($cnx) == true) : ?>
  2. <p>Bienvenido <?php echo htmlentities($_SESSION['username']); ?>!</p>
  3. <?php else : ?>
  4.            <p>
  5.                <span class="error">Usted no esta autorizado para ver esta página.</span> Favor <a href="index.php">Use el registro</a>.
  6.            </p>
  7.        <?php endif; ?>

he lo que conseguido leyendo algunas cosas por internet.. pero no consigo lograrlo.. soy muy novato  en esto..



Título: Re: Protejer página con php
Publicado por: engel lex en 16 Septiembre 2016, 17:56 pm
Como haces el logout? Probablemente no estés limpiando las variables

Por que no usas el metodo predefinidos de PHP para el manejo de sesiones?


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 18:10 pm
Dentro de VER.PHP llamo con un include aun archivo CABECERA.PHP donde tengo el botón cerrar sesión..

Código
  1.    session_destroy();
  2.  
  3.    header("Location: ../index.php");
  4. exit();

ahora sobre metodo predefinidos ni idea de eso amigo... Ahora crees que deba cambiar algo? la verdad estoy re perdido... saludos.!!


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 18:18 pm
Bueno ahora logre hacer que la pagina no se ingrese por la url.. pero ahora no me reconoce el login.. no me deja ingresar por user ni pass.. que podrá ser?


Título: Re: Protejer página con php
Publicado por: engel lex en 16 Septiembre 2016, 19:33 pm
Session_destroy segun PHP.net dice (puedes hacer click en tu código arriba y te llevará )

Citar
session_destroy() destruye toda la información asociada con la sesión actual. .

Para destruir la sesión completamente, como desconectar al usuario, el id de sesión también debe ser destruido. Si se usa una cookie para propagar el id de sesión (comportamiento por defecto), entonces la cookie de sesión se debe borrar. setcookie() se puede usar para eso.

Siempre debes leer la documentacion en caso de error


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 19:51 pm
si.. le he incluido
Código
  1. setcookie(session_name(),'', $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
al archivo logout.php...

pero no entiendo porque ahora no puedo ingresar con mis datos de registro... busco el porque pero no veo porque no puedo ingresar.. no he tocado nada excepto la función para proteger la pagina que he creado... no entiendo realmente.. puedes darme una mano para ver que falla porfavor?


Título: Re: Protejer página con php
Publicado por: engel lex en 16 Septiembre 2016, 20:02 pm
Retorna todo los cambios y en cerrar session hacer un foreach a las valiables de session y las seteas a Null


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 16 Septiembre 2016, 20:27 pm
  :-( bueno ahí me matastes realmente.. ni idea de como hacer eso.. gracias igual por tu tiempo, veré que encuentro por google.. saludos!!


Título: Re: Protejer página con php
Publicado por: engel lex en 18 Septiembre 2016, 01:25 am
Por retornar los cambios, era que deshicieras lo que hiciste para que no funcionara... para el cerrar sesion, seteas (es decir le das valor) NULL  a las variables asi el isset daria falso al leerlas


Título: Re: Protejer página con php
Publicado por: Marciano_79 en 19 Septiembre 2016, 02:01 am
No resulta...


Título: Re: Protejer página con php
Publicado por: engel lex en 19 Septiembre 2016, 06:47 am
Muestra código