Visualizzazione dei risultati da 1 a 6 su 6

Discussione: problema hacker

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    119

    problema hacker

    Salve,

    ho avuto questo problema che mi ha causato la sospensione a parte di aruba del mio account in pratica hanno utilizzato il mio sito per inviare email richiamando una pagina esterna infatti il mio sito è strutturato con una cornice e un codice php che richiama le pagine, vorrei sapere come posso fare per proteggere questo richiamo.
    Il codice è questo:

    Codice PHP:
    <?
    $master
    =$_GET['pagina'];
    if (
    $_GET['pagina'] > null) {

    $master strip_tags ($master);

    }
    else

    $master = ("home");
    ?>
    dove pagina è la variabile che richiama la pagina da aprire nella cornice


    l'hacker a utilizzato questa variabile sostituendo il nome della pagina con un indirizzo esempio

    ?pagina=home con ?pagina=http://nome del sito/pagina contenent codice maligno


    qualcuno può indicarmi come filtrare o proteggere questi richiami, grazie
    francesco

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    una prima precauzione potrebbe essere di bloccare l'esecuzione della pagina se l'indirizzo della pagina da includere contiene un http ovvero e' un sito esterno.

    Detto questo a me non piace passare parametri di quel tipo, appunto perche' sono rischiosi.

    No pvt per sollecitare risposte, grazie.

  3. #3
    Devi filtrare ogni dato che possa provenire da una fonte non sicura, o meglio, devi filtrare tutti i dati che non vengono da una fonte sicura (database)

    Codice PHP:
    if (isSet($_GET['page'])) {
       if (
    controlla($_GET['page'])) {
          
    $page $_GET['page'];
          include(
    "$page");
       } else {
          echo 
    "Operazione non valida!";
       }
    } else {
       echo 
    "Non hai specificato la pagina";
    }

    function 
    controlla($str) {
       if (
    eregi("^[0-9a-zA-Z_-]*$",$str)) {
          return 
    true
       } else {
          return 
    false
       }

    Con questo codice (l'ho scritto al volo quindi spero non ci siano errori) il nome della variabile get viene controllata, nel caso in cui contenga solo numeri, lettere o i caratteri - e _, viene inclusa la pagina, altrimenti si ottiene il messaggio "Operazione non valida!"

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    se vuoi andare sul sicuro e senza dover usare un eregi() in una funzione che solleciterebbe di non poco il server, puoi usare direttamente uno switch:

    Codice PHP:
    <?php
    if (isset($_GET['pagina'])) 

        switch(
    $_GET['pagina']) 
        { 
            case 
    'home':include('home.htm'); 
            break; 

            case 
    'foto':include('foto.htm'); 
            break; 

            default:include(
    'home.htm'); 
        } 

    else 

        include(
    'home.htm'); 
    }  
    ?>

    ed i links poi li riprendi così:

    Home

  5. #5
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    un ulteriore vantaggio nell'usare lo switch, è che ti consente anche di utilizzare dei file che si trovano nei sottofolder o in altri folder:

    Codice PHP:
    case 'foto':    include('../cartella/foto.htm'); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    119
    Salve,

    grazie a tutti :-)


    a modificato il codice come suggerito. speriamo bene!!!
    francesco

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.