Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182

    Proteggere "bene" una pagina

    Ciao a tutti!
    Mettiamo che io abbia una pagina password.php con un form di invio password che mi serve per accedere a /cartella/admin.php

    La pagina /cartella/admin.php preleva la password tramite un semplice costrutto IF-ELSE e se è valida mostra la pagina.

    Mettiamo che in /cartella/admin.php ci siano vari link utili all'amministratore che anch'essi dovrebbero essere protetti, come ad esempio /cartella/pannello1.php /cartella/pannello2.php, ecc...

    come faccio a proteggere tutta la cartella senza impostare password ad ogni pagina?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Beh a mio modo di vedere le cose se tu devi proteggere una certa pagina è nella natura delle cose chiedersi:
    se si è verificata questa cosa puoi accedere, else non puoi

    Tanto per cominciare potresti tirare fuori il codice di controllo dei permessi e metterlo in uno script da includere a parte, il che ti eviterà di riscrivere lo stesso codice mille volte e, cosa piu importante, il giorno che decidi di cambiare criteri di accesso devi modificare un solo file e non millemila file

    Quando iniziavo a programmare in php mi facevo una domanda simile perche venendo da java ero abituato ad usare i filters di apache che 'costringevano' il client a passare prima per un certo modulo (in questo caso un modulo di autenticazione)...poi mi sono arreso e ho implementato un framework mastodontico per la gestione di utenti, contenuti, eccetera...ma ancora scrivo

    if ($loggato) entra(); senno esci();





    edit: in realtà sono stato un po sbrigativo...esistono diversi accorgimenti che puoi prendere epr rendere meno banale il tuo script di accesso, spiega meglio l'architettura del tuo sistema

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    in /cartella/admin.php ho messo un costrutto del genere

    if ($password = "pippo") {

    echo "password esatta. ecco il pannello:
    ";
    echo "pannello 1: link
    ";
    echo "pannello 2: link
    ";
    echo "pannello 3: link
    ";
    }

    else {
    echo "password errata";
    }


    se una persona scrive sulla barra del browser dominio/cartella/pannello1.php accede alla pagina senza aver eseguito un login. Questo è quello che vorrei evitare. Come posso fare?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    setta una variabile di sessione con un determinato valore quando l'utente viene autenticato

    controlla poi l'esistenza di tale variabile in ciascuna pagina includendo appunto un file che esegua tale verifica. Se la variabile di sessione non è settata (o se la sessione è scaduta) rimanda l'utente alla pagina di login.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    182
    un aiuto per fare ciò? uno script? qualche riga di codice?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    Ma quel password che è uguale a pippo da dove viene, da un form direttamente?

    Fai cosi

    codice:
    // pagina che elabora la richiesta di login
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    if (leggo_dal_db_se_la_password_è_giusta($user,$pass)) {
        // ok, l'utente è loggato
        $_SESSION['username'] = $user;
    
    } else {
        // l'utente non è loggato
        header("Location: http://www.tuosito.it/login.htm");
    }
    codice:
    //codice da includere in admin.php, pannello1.php, pannello2.php, etc
    if (!isset($_SESSION['user'])) header("Location error.php"); // l'utente non è loggato e lo mandi via
    
    //qua sotto il codice della tua pagina top secret :)

  7. #7
    index.php
    Codice PHP:
    <?php
    if((isset($_SESSION['admin'])) AND ($_SESSION['admin'] == true) OR ($_GET['go'] == "login"))
    {
        if((!isset(
    $_GET['go'])) OR (empty($_GET['go'])))
        {
            require 
    "sezioni/home.php";
        }
        else 
        {
            if((
    file_exists("sezioni/".$_GET["go"].".php")) AND (is_readable("sezioni/".$_GET["go"].".php")))
            {
                include 
    "sezioni/".$_GET['go'].".php";
            }
            else 
            {
                
    ?>
                [url='<?=$url?>']<h1>La pagina al quale volevi accedere non esiste, clicca qui per tornare alla home page</h1>[/url]
                <?php
            
    }
        }
    }
    else 
    {
        include 
    'sezioni/login.php';
    }

    login.php
    Codice PHP:
    <?php
    if((!isset($_SESSION['admin'])) OR (empty($_SESSION['admin'])) OR ($_SESSION['admin'] == false))
    {
        if((
    $_GET['step'] == 1) OR (!isset($_GET['step'])) OR (empty($_GET['step'])))
        {
            
    ?>
            <form name="login" method="post" action="/index.php?go=login&step=2">
            <label>Username: <input type="text" name="username" /></label>
            <label>Password: <input type="password" name="password" /></label>
            <label><input type="submit" name="dologin" value="Logga" /></label>
            </form>
            <?php
        
    }
        else if((
    $_GET['step'] == 2) AND (isset($_POST['dologin'])) AND ($_POST["dologin"] == "Logga"))
        {
            if((
    $_POST['username'] == "username") AND ($_POST['password'] == "password"))
            {
                
    $_SESSION['admin'] = true;
                print 
    "<h1>Login effettuato con successo.</h1>";
            }
            else 
            {
                print 
    "<h1>AHAHAHAHAHA</h1>";
            }
        }
    }
    else 
    {
        print 
    "<h1>Sei gi&agrave; loggato</h1>";
    }
    pagina esterna caricata in header

    Codice PHP:
    session_start();

    if((!isset(
    $_SESSION['admin'])) OR (empty($_SESSION['admin'])) OR ($_SESSION['admin'] == false))
    {
        
    $_SESSION['admin'] == false;


  8. #8
    Ci tengo a sottolineare che il login sopra va bene per proteggere delle apgine amatoriali o con scarso bisogno di protezione perchè contiene bug di protezione.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    gia che ci sei dicci quali

  10. #10
    Originariamente inviato da Gil Mour
    gia che ci sei dicci quali
    Anch'io vorrei un aiuto da questo punto di vista. Sto realizzando un sistema di autenticazione molto simile al precedente ed anche a me è stato fatto notare come si possa insorgere in problemi di sicurezza piuttosto evidenti.

    Inoltre volevo chiedere un'altra cosa: stavo cercando di capirci qualcosa sul sistema di gestione utenti proposto in questo articolo:

    http://php.html.it/articoli/leggi/90...nti-con-php/1/

    ma avidentemente, le mie conoscenze attuali di php non mi permettono una perfetta comprensione. In ogni caso, il sistema suddetto risolverebbe in parte i problemi di cui sopra?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.