Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    sicurezza accesso pannello controllo

    Salve ragazzi sto da poco utilizzando php (scrivevo in VBScript) e vorrei farvi delle domande in merito alla realizzazione di un pannello di controllo.
    Ho realizzato il primo file index.php :

    Codice PHP:
    <?php 
    session_start
    (); 
    if (isset(
    $_POST["login"]) && isset($_POST["passwd"])) {
       if (
    $_POST["login"]!="" && $_POST["passwd"]!="") {
          
    $connmysql_connect("192.168.x.xxx","pippo",123456);
          
    $dbmysql_select_db("ecdl",$conn) or die ("non trovo il db Errore:" mysql_error());
                
          
    $ricmysql_query("SELECT login, passwd FROM users WHERE login='" $_POST["login"] . "' AND passwd='" $_POST["passwd"] . "';",$conn) or die ("errore nel'istruzione della query Errore:" mysql_error());
          
    $num=mysql_num_rows($ric);
          if (
    $num==1){
             
    $_SESSION["login"]=$_POST["login"];
             
    $_SESSION["passwd"]=$_POST["passwd"];
             
    header"Location: pag/index.php" );
          }
          else {
        
    ?>
             <script language='JavaScript'> alert('Login o Passwd ERRATE!!!') </script>
    <?php            
          
    }
        
       }        
    }
    ?>

    <head>
      <title>Documento senza titolo</title>
    </head> 
    <body>
     <form action="index.php" method="post">
       <table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
          <td width="100" align="left" valign="middle">
           <font face="Comic Sans MS">
             Login: <input name="login" type="text" id="login" size="12" />
           </font>
          </td>
          <td width="100" align="left" valign="middle">
           <font face="Comic Sans MS">
            Passwd:<input name="passwd" type="password" id="passwd" size="12" />
           </font>
          </td>
       </tr>
       <tr>
         <td colspan="2" align="center" valign="middle">
          <input type="submit" name="Submit" value="Invia" /></td>
       </tr>
      </table>    
     </form>    

    </body>
    </html>
    ...all'interno di ogni altra pagina web ho inserito un

    Codice PHP:
    include("db.php"); 
    dove ho scritto
    Codice PHP:
    <?php
    $conn
    mysql_connect("192.168.x.xxx","pippo","123456");
    $dbmysql_select_db("ecdl",$conn) or die ("non trovo il db Errore:" mysql_error());
    $ricmysql_query("SELECT login, passwd FROM users WHERE login='" $_SESSION["login"] . "' AND passwd='" $_SESSION["passwd"] . "';",$conn) or die ("errore nel'istruzione della query Errore:" mysql_error());
    $num=mysql_num_rows($ric);
    if (
    $num!=1){
     
    // rimando nella pag di login
     
    header"Location: ../index.php" );
    }                
                    
    ?>
    ...ho fatto così pensando che sia il metodo più sicuro! nelle guide in generale ho visto che viene scritto nel file db.php

    codice:
    	if (!isset($_SESSION["login"]) && !isset($_SESSION["passwd"])) {
    		header( "Location: ../index.php" );
    	}
    Secondo voi qual'è il metodo migliore guardando la sicurezza? Non è + vulnerabile il metodo delle guide?

  2. #2
    Utente di HTML.it L'avatar di Laxus
    Registrato dal
    Oct 2010
    Messaggi
    251
    Dato che si parla di sicurezza, è imperativo ricordarsi sempre di filtrare i dati in ingresso (mysql_real_escape_string)! Inoltre, quando si constata che l'utente non ha i privilegi per l'accesso, un semplice redirect da parte del browser non basta per fermare l'utente! E' sempre un bene piazzare un exit; sotto l'header, altrimenti l'esecuzione dello script continua.

    Rispondendo alla tua domanda: è ininfluente. Anzi, risulta comunque più vantaggioso quello della guida. Il motivo è che le variabili $_SESSION["login"] e $_SESSION["passwd"] si creano al momento del login. Se non esistono allora posso essere sicuro che l'utente non è riuscito ad autenticarsi correttamente. Non conviene, ad ogni richiesta della pagina, controllare se login e psw esistono, sarebbe uno spreco di risorse visto che è sufficiente quella del login!

  3. #3
    e se dovessi usare le stesse credenziali del db per l'accesso all'area privata?
    facendo in questo modo:

    Codice PHP:
    if (isset($_POST["login"]) && isset($_POST["passwd"])) {
       if (
    $_POST["login"]!="" && $_POST["passwd"]!="") {
            
    // uso $_POST["login"] e $_POST["passwd"] per poter far restituire un valore 
            // booleano da $conn
            
    $connmysql_connect("192.168.x.xxx",[B]$_POST["login"][/B] ,[B]$_POST["passwd"][/B] );
               if (
    $conn){
                    
    // se è vero valorizzo le sessioni
                    // ...e come mi ha suggerito Laxus nelle pag successive nn controllo 
                    // in questo caso la connessione ...anche se ho qualche dubbio!
                  
    $_SESSION["login"]=$_POST["login"];
                  
    $_SESSION["passwd"]=$_POST["passwd"];
                  
    header"Location: pag/index.php" );
               }
               else {
                  
    // altrimenti do il mex d'errore
         
    echo "<script language='JavaScript'> alert('Login o Passwd ERRATE!!!') </script>"            
               
    }
       }

    questo cambierebbe un po di cose riguardando le guide SQL injection dove si spiega il classico trucchetto tipo ' OR 'pippo'='pippo ....che funziona quasi sempre!

    Secondo quesito:
    siamo certi di nn fare nessun controllo in ogni pagina? siamo sicuri che nn esiste la possibilità di poter valorizzare le sessioni attraverso un programma di hacking?

    In pratica se qualcuno si avvicina al mio pc e vede nella barra dell'indirizzo il nome del file ad esempio www.miosito.it/miaareaaccesso.php e mi trovo già loggato ...questa persona potrebbe valorizzare le sessioni raggiungendo direttamente www.miosito.it/miaareaaccesso.php ed avere accesso!
    ...spero di essere stato chiaro! Ragazzi mi sto sbagliando o mi sto facendo solo delle s...e mentali?

    Se allinterno del file di ogni pagina faccio un semplice controllo in questo modo:

    Codice PHP:
        if (!isset($_SESSION["login"]) && !isset($_SESSION["passwd"])) {
            
    header"Location: ../index.php" );
        } 
    ...ma se esiste la possibilità di poter valorizzare $_SESSION["login"] E (AND) $_SESSION["passwd"] siamo veramente fregati!

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.