Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    [PHP] login e sicurezza...

    salve a tutti...

    sto cercando di fare un form per il login in una area privata, e tutto sembra andare ok...

    non vorrei però incorrere in problemi di sicurezza, mi potreste dire qualcosa?

    ecco lo script:
    Codice PHP:
    <?php
        
    //includo i file di configurazione
        
    include ("config.php");
        include (
    "mysql.php");
       
         if(!isset(
    $action)) {
            
    $action "";
            
    $msg "";
         }
         
        
    // titolo della pagina
        
    $title "Admin Area";
        
        
    // controllo l'invio dei dati:
        
    if(isset($_POST['user']) || isset($_POST['pass'])) {
            
    $user htmlspecialchars($_POST['user']);
            
    $pass htmlspecialchars($_POST['pass']);

            
    // controllo i dati inviati
            
    if(strcmp($user,"$admin_user") == && strcmp($pass,"$admin_pwd") == 0) {

                
    $action "login";

            } else {

                if (
    $action == "") {

                    
    $action "err";
                    
    $msg "Errore, dati non corretti";


                }
            }
        } else {
            
    $action "";
        }

        switch (
    $action):

        
    // primo ingresso in pagina
        
    default:

            
    // inizio della pagina
            
    eval("printtemp(\"".gettemp("template/head.inc.tpl")."\");");
            
            
    // form di login dell'area admin
            
    eval("printtemp(\"".gettemp("template/admin_form_login.inc.tpl")."\");");

            
    // fine della pagina
            
    eval("printtemp(\"".gettemp("template/foot.inc.tpl")."\");");

        break;
        
        case 
    "login":

            
    // inizializzo la sessione
            
    session_register("sess");
            
            
    header("Location: $admin_main");

        break;

        
    // se i dati non sono corretti
        
    case "err":

            
    // inizio della pagina
            
    eval("printtemp(\"".gettemp("template/head.inc.tpl")."\");");

            
    // form di login dell'area admin
            
    eval("printtemp(\"".gettemp("template/admin_form_login.inc.tpl")."\");");

            
    // fine della pagina
            
    eval("printtemp(\"".gettemp("template/foot.inc.tpl")."\");");

        endswitch;

    ?>
    Grazie mille a tutti!

    Francesco
    Ciao!

  2. #2
    ho chiesto qualcosa di complicato??
    Ciao!

  3. #3
    Codice PHP:
     <?php 
        
    //includo i file di configurazione 
        
    include ("config.php"); 
        include (
    "mysql.php"); 
        
         if(!isset(
    $action)) { 
            
    $action ""
            
    $msg ""
         } 
          
        
    // titolo della pagina 
        
    $title "Admin Area"
         
        
    // controllo l'invio dei dati: 
        
    if(isset($_POST['user']) || isset($_POST['pass'])) { 
            
    $user htmlspecialchars($_POST['user']); 
            
    $pass htmlspecialchars($_POST['pass']); 

            
    // controllo i dati inviati 
            
    if(strcmp($user,"$admin_user") == && strcmp($pass,"$admin_pwd") == 0) { 

                
    $action "login"

            } else { 

                if (
    $action == "") { 

                    
    $action "err"
                    
    $msg "Errore, dati non corretti"


                } 
            } 
        } else { 
            
    $action ""
        } 

        switch (
    $action): 

        
    // primo ingresso in pagina 
        
    default: 

    //STAMPO IL FORM SENZA MESSAGGI
            
        
    break; 
         
        case 
    "login"

            
    // inizializzo la sessione 
            
    session_register("sess"); 
             
            
    header("Location: $admin_main"); 

        break; 

        
    // se i dati non sono corretti 
        
    case "err"

    //STAMPO IL FORM ED IL MESSAGGIO DI ERRORE.

        
    endswitch; 

    ?>
    la mia paura è che qualcuno possa fare:

    http://server.it/admin/login.php?action=login

    che con register_global = on potrebbe essere settata...
    (tra parentesi, oggi ho provato ma non funzionava...)

    sbaglio?
    se tu fossi un lamer, cosa proveresti a fare?

    dai, dimmi....
    Ciao!

  4. #4
    Il problema e' basare un login su una variabile ... a quale scopo ?
    Se il tizio ha scritto SIA utente CHE pass (e non che verifichi uno o l'altro e poi usi entrambi ... che oltretutto con htmlntities modifichi i valori quindi una pass tipo pipp>o non potrai mai usarla per esempio ... e se non la vuoi, inutile usare htmlentities) salvi questi e vai avanti, altrimenti ciao.

    codice:
    <?php 
    include ("config.php"); 
    include ("mysql.php");
    $title = "Admin Area";
    if(isset($_POST['user'], $_POST['pass'])) {
    	if($_POST['user'] === $admin_user && $_POST['pass'] === $admin_pwd) {
    		session_register("sess");
    		header('Location: '.$admin_main);
    	}
    }
    //STAMPO IL FORM ED IL MESSAGGIO DI ERRORE.
    // tanto se arriva qui significa che all' header non c'e' arrivato
    ?>
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    in effetti io pensavo a delle espressioni regolari, ma per il momento ho messo questi...

    poi, il vari campi, mi servono per distinguere la prima entrata nella pagina, da una seconda entrata con errori, nella quale devo stampare il messaggio di errore appunto...

    no??
    Ciao!

  6. #6
    Originariamente inviato da fmortara
    in effetti io pensavo a delle espressioni regolari, ma per il momento ho messo questi...

    poi, il vari campi, mi servono per distinguere la prima entrata nella pagina, da una seconda entrata con errori, nella quale devo stampare il messaggio di errore appunto...

    no??
    Ma non usi il db per l'autenticazione dello user?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da piero.mac
    Ma non usi il db per l'autenticazione dello user?
    eh eh piero, mica ci si rende conto dei rischi che si corrono, si preoccupano dell' url appeso in register_global a on (solo un server vecchio e poco mantenuto potrebbe avere tale abominio) ma non si preoccupano mai di un


    var_dump(glob('/temporary/[p][h][p]*'));

    che stampa a video tutte le sessioni usate in un virtual server da qualunque utente


    P.S. "temporary" e' per non far nascere comunita' di lamers dopo sto' 3D
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8


    Le cose semplici sono di solito piu' performanti ed efficaci. Non ho mai estratto user e pwd dal db. Se mi serve un riferimento allo user prendo qualcos'altro...

    Un mio collega istruttore suole dire in merito: User e' la porta e la password la chiave. Servono per individuare la porta in cui inserire la chiave. Nessuno si sognerebbe mai di smontare una porta che si e' aperta con quella chiave, per verificare se la chiave corrisponde alla serratura, come nessuno si sognerebbe mai di smontare tutte le porte per vedere a quale serratura corrisponde quella chiave.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    parlavo del fatto che MOLTI salvano dati sensibili sulle sessioni e non nel db.

    Io ultimamente le sessioni le uso solo per ricordarmi sotto sezioni di pagine, perche' l'unico dato impostato da me, come id univoco hashato in sha1 che non rappresenta ne una user ne una password, lo salvo sul cookie del client.


    Ma "non ti rendi conto" di quante belle cose si possono trovare nelle cartelle temporanee dei tanti virtual server presenti in italia

    (e non solo si possno leggere, ma anche sovrascrivere, o creare / modificare ... swappo il file dell' admin, lui viene tagliato fuori, io mi riprendo i suoi dati e sono dentro, facile ?)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    antré ... se metti un header ... non vuol dire che li non ci arriva vuol dire che li ci arriva, viene eseguito ma tanto non si vede na mazza perché ovviamente viene ridirezionato all'istante l'utente

    metticci un bell'exit sotot l'header
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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 © 2025 vBulletin Solutions, Inc. All rights reserved.