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

    Vari problemi con uno script

    Ciao a tutti ho realizzato un piccolo script che analizzando la querystring scrive tutto in un file di log.Inoltre nel caso in cui l'utente usa dei comandi pericolosi [tipo: union,select etc...] viene bloccato...

    Il codice è questo:
    Codice PHP:

    <?php 
    // per ottenere l'url che ha generato l'errore
    $where "http://$HTTP_HOST$REQUEST_URI"
    $ip$_SERVER['REMOTE_ADDR'];
    $query_string$_SERVER['QUERY_STRING'];
    $http_referrer$_SERVER['HTTP_REFERER'];
    $date=getdate();
    $sec=$date['seconds'];
    $min=$date['minutes'];
    $hor=$date['hours'];
    $mday=$date['mday'];
    $mon=$date['mon'];
    $year=$date['year'];
    if (isset(
    $where)) {
    $filename"/web/htdocs/www.tuosito.it/home/logsite/log.txt";
    $content="$where || $ip  || $mday/$mon/$year  ||  $hor:$min:$sec ";
    $fpx fopen ($filename"w");
    $fw=fwrite ($fpx$content);
    fclose ($fpx); 
    }
    if (
    stristr($query_string,'+union+') OR stristr($query_string,'%20union%20') OR
    stristr($query_string,'*/union/*') OR stristr($query_string,' union ') )
    {
    echo 
    "Hai utilizzato il comando sql UNION";
    exit();
    }
    if (
    stristr($query_string,'+select+') OR stristr($query_string,'%20select%20') OR
    stristr($query_string,'*/select/*') OR stristr($query_string,' select ') )
    {
    echo 
    "Hai utilizzato il comando sql SELECT";
    exit();
    }
    if (
    stristr($query_string,'+delete+') OR stristr($query_string,'%20delete%20') OR
    stristr($query_string,'*/delete/*') OR stristr($query_string,' delete ') )
    {
    echo 
    "Hai utilizzato il comando sql DELETE";
    exit();

    }
    if (
    stristr($query_string,'+drop+') OR stristr($query_string,'%20drop%20') OR
    stristr($query_string,'*/drop/*') OR stristr($query_string,' drop ') )
    {
    echo 
    "Hai utilizzato il comando sql DROP";
    exit();

    }
    if (
    stristr($query_string,'+insert+') OR stristr($query_string,'%20insert%20') OR
    stristr($query_string,'*/insert/*') OR stristr($query_string,' insert ') )
    {
    echo 
    "Hai utilizzato il comando sql INSERT";
    exit();

    }
    ?>
    Il problema è che scrivendo sul file viene sovrascritta sempre una sola riga quindi posso visualizzare soltanto l'ultima query_string usata dall'utente!!
    Ed inoltre nn riesce a bloccare l'utente,cioè anche se uso union,select etc.. non mi scrive il messaggio di errore!!
    Come posso risolvere? ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    per appendere l'ultima riga a quelle già presenti devi aprire il file in modalità append.. usando 'a'
    Codice PHP:
    fopen('file.txt','a'
    per quanto riguarda il fatto che nn ti blocca mi viene in mente che nella condizione c'è uno spazio alla fine e tu nn lo metti forse?

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    risolto il problema per il file!!

    Ma nn riesco a capire perchè nn mi stampa il messaggio di errore!!!

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    hai provato a fare come ti ho detto?
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    si per il file ho seguito il tuo consiglio!!
    Per lo spazio nn ho capito dove devo eliminare lo spazio nello script...

    grazie

  6. #6
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    'update' al posto di 'update '
    credo possa bastare questo invece di tutte quelle condizioni in or all'interno degli if in quanto stristr cerca senza badare a min e maiusc l'occorrenza di update dove da te indicato...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  7. #7
    ho provato ma nn funziona lo stesso!!
    Ad esempio se scrivo http://www.tuosito.it/index.php?id_art=select * from tabella

    nn riconosce nulla...

  8. #8
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    inutile dire che per la stringa che hai usato come esempio devi levare lo spazio anke alla relativa condizione sempre nelle varie if, altrimenti è chiaro che levando ad update e testando con select la cosa nn funge.. nn trovi?
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  9. #9
    si naturalmente ho levato gli spazi in tutte le condizioni

  10. #10
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    Codice PHP:
    <?php 
    // per ottenere l'url che ha generato l'errore
    $where "http://$HTTP_HOST$REQUEST_URI"
    $ip$_SERVER['REMOTE_ADDR'];
    $query_string$_SERVER['QUERY_STRING'];
    $http_referrer$_SERVER['HTTP_REFERER'];
    $date=getdate();
    $sec=$date['seconds'];
    $min=$date['minutes'];
    $hor=$date['hours'];
    $mday=$date['mday'];
    $mon=$date['mon'];
    $year=$date['year'];
    if (isset(
    $where)) {
    $filename"/web/htdocs/www.tuosito.it/home/logsite/log.txt";
    $content="$where || $ip  || $mday/$mon/$year  ||  $hor:$min:$sec ";
    $fpx fopen ($filename"a");
    $fw=fwrite ($fpx$content);
    fclose ($fpx); 
    }
    if (
    stristr($query_string,'union')!=FALSE )
    {
    echo 
    "Hai utilizzato il comando sql UNION";
    exit();
    }
    if (
    stristr($query_string,'select')!=FALSE )
    {
    echo 
    "Hai utilizzato il comando sql SELECT";
    exit();
    }
    if (
    stristr($query_string,'delete')!=FALSE )
    {
    echo 
    "Hai utilizzato il comando sql DELETE";
    exit();

    }
    if (
    stristr($query_string,'drop')!=FALSE )
    {
    echo 
    "Hai utilizzato il comando sql DROP";
    exit();

    }
    if (
    stristr($query_string,'insert')!=FALSE )
    {
    echo 
    "Hai utilizzato il comando sql INSERT";
    exit();

    }
    ?>
    vedi se questo funziona....
    poi ottimizzo il codice ammesso che funge...
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

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.