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

    PRoblema con le sessioni

    ciao, sto preparando uno script per il login degli utenti.

    Questo è il codice

    <?
    session_start ();
    include "dati.php" ;
    mysql_select_db($db_name, $db);
    if ( $_GET[action]=="login")
    {

    $controllo = mysql_numrows (mysql_query("SELECT id FROM iscritti WHERE username='$_POST[username]' AND password='$_POST[password]'"));
    if ( $controllo == "1" ) {
    $loggato="si";
    }
    else
    { echo "Non sei loggato" ; $loggato="no"; }
    session_register("loggato");

    }
    mysql_close();
    ?>



    Questo è l'errore:



    Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0



    Le global sono su on...per cua non capisco il problema..
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    A parte il problema, il tuo script sembra provenire dal 1999.

    1. Non usare session_register, accedi sempre a $_SESSION.
    2. La query è sbagliata, con quel metodo riuscirei a entrare nel tuo sito in 3 secondi, leggiti qualcosa sulle sql_injection.


    ciao

  3. #3
    Come faresti a entrare? Mi serve proprio...

    Come devo farE?
    Basta che scrivo $_SESSION[loggato]=si; e lui automaticamente me lo memorizza?
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  4. #4
    Ho fatto cosi...e ora sembra funzionare...ditemi se anche per voi è corretto:

    <?
    session_start ();
    include "dati.php" ;
    mysql_select_db($db_name, $db);
    if ( $_GET[action]=="login")
    {

    $controllo = mysql_numrows (mysql_query("SELECT id FROM iscritti WHERE username='$_POST[username]' AND password='$_POST[password]'"));
    if ( $controllo == "1" ) {
    $_SESSION[loggato]="si";
    }
    else
    {
    echo "Non sei loggato" ; $_SESSION[loggato]="no"; }

    echo "$_SESSION[loggato]";
    }
    mysql_close();
    ?>

    Ora.. come hai detto c'è il problema delle sql iniection...dimmi come faresti tu ad entrare del sito..
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    nel campo user inserisco qualsiasi cosa, in password :
    codice:
    altro' OR 1=1
    Ciao

  6. #6
    Originariamente inviato da gianiaz
    nel campo user inserisco qualsiasi cosa, in password :
    codice:
    altro' OR 1=1
    Ciao
    Provato....messo un username a caso... e altro' OR 1=1 come password...non logga!!!!!!
    Non capisco perchè dici che entreresti quando vuoi...cioè...se è cosi davvero fammi capire bene!
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    hai ragione, ho sbagliato a scrivere:

    codice:
    altro' OR '1'='1
    cosi la tua query diventa:

    codice:
    SELECT id FROM `iscritti` WHERE user = 'qualsiasi' and pass='altro' OR '1'='1'
    cosi la query da sempre almeno un risultato, e tu che controlli solo mysql_num_rows farai passare l'utente.

    Il modo corretto, che se cerchi in giro troverai è quello di selezionare l'utente che ha user = a quello inserito, selezionarne la pass, e controllare che sia uguale a quella inserita dall'utente, cosi sei sicuro (almeno per il discorso delle sql injection).

    ciao

  8. #8
    Originariamente inviato da gianiaz
    hai ragione, ho sbagliato a scrivere:

    codice:
    altro' OR '1'='1
    cosi la tua query diventa:

    codice:
    SELECT id FROM `iscritti` WHERE user = 'qualsiasi' and pass='altro' OR '1'='1'
    cosi la query da sempre almeno un risultato, e tu che controlli solo mysql_num_rows farai passare l'utente.

    Il modo corretto, che se cerchi in giro troverai è quello di selezionare l'utente che ha user = a quello inserito, selezionarne la pass, e controllare che sia uguale a quella inserita dall'utente, cosi sei sicuro (almeno per il discorso delle sql injection).

    ciao
    Ripeto...o non capisco molto io di cio che mi dici , oppure l'utente non entra.
    Ho provato...e non si logga affatto nemmeno cosi.
    Anche perchè la mia query, a fare come dici tu diventa cosi:
    SELECT id FROM `iscritti` WHERE user = 'qualsiasi' and pass='altro OR '1'='1''
    Dimentichi che $_POST[password] è racchiuso tra le ' '
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    ti sbagli, il primo apice (dopo altro) va a chiudere l'apice che apri, e l'ultimo apice inserito nel campo password (prima del secondo 1) va ad aprire quello che poi chiudi tu.

    Copia esattamente la stringa che ti ho passato nell'ultimo post, e anche senza inserirla in un campo form, fai una semplice sostituzione in una query di phpmyadmin e vedrai i risultati.

    ciao

    p.s. fidati, le sql injection non le ho inventate io, ci sono semplicemente passato prima di te...

  10. #10
    Originariamente inviato da gianiaz
    ti sbagli, il primo apice (dopo altro) va a chiudere l'apice che apri, e l'ultimo apice inserito nel campo password (prima del secondo 1) va ad aprire quello che poi chiudi tu.

    Copia esattamente la stringa che ti ho passato nell'ultimo post, e anche senza inserirla in un campo form, fai una semplice sostituzione in una query di phpmyadmin e vedrai i risultati.

    ciao

    p.s. fidati, le sql injection non le ho inventate io, ci sono semplicemente passato prima di te...
    Scusa se insisto...ma il login non me lo fa... perchè allora??
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

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.