Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Template pls aiuto

  1. #1

    Template pls aiuto

    Allora io ho fatto una cosa del genere

    Codice PHP:
    <link rel='stylesheet' href='stile.css' type='text/css'>
    <? include("header.php");    ?>
    <center>
    <table border="0" width="760" id="table1">
        <tr>
            <td>
            <table border="0" width="100%" id="table2">
                <tr>
                    <td valign="middle">
                    <p align="center"><? include("centrata.php");?></td>
                </tr>
            </table>
            </td>
        </tr>
    </table>
    </center>
    <? include("footer.php");?>
    all'interno di centrata.php ci sta una serie di tabelle e all'interno di una di questa ho inserito <? include("main.php");?> che poi è questo....




    Codice PHP:
    <?php

    $FileDir 
    "pagine"// Dove si trovano le pagine
    $Wrong_ID "Questa pagina non esiste! 

    "
    // Messaggio in caso la pagina non esista
    $Start_page "home.html"// La pagina che viene aperta all'inizio


             
    if(!is_dir($FileDir))die("Errore directory non valida!!");


                 if(isset(
    $_GET['id']))
                  
                  {

                          
    $id trim($_GET['id']);
                          
    $id str_replace("\\""/"$id);
                          
                          
                          
                                                if(
    file_exists($FileDir."/".$id.".html"))
                                                
                                                {
                                                
                                                
    $id $id.".html";
                                                
                                                }  
                                                
                                                elseif(
    file_exists($FileDir."/".$id.".htm"))
                                                
                                                {
                                                
                                                
    $id $id.".htm";
                                                
                                                }
                                                
                                                elseif(
    file_exists($FileDir."/".$id.".inc"))
                                                
                                                {
                                                
                                                
    $id $id.".inc";
                                                
                                                }
                                                
                                                elseif(
    file_exists($FileDir."/".$id.".php"))
                                                
                                                {
                                                
                                                
    $id $id.".php";
                                                
                                                }
                                                
                                                else
                                                
                                                {
                                                
                                                echo 
    $Wrong_ID;
                                                
                                                
    $id $Start_page;
                                                
                                                }
                          
            

                  }
                  
                  else
                  
                  {
                          
                          
    $id $Start_page;
                  
                  }

                
                
          
          
          
          
          if(
    $id != $Start_page)
          
          {
                       include(
    $FileDir."/".$id);
                       
                       }
                       
                       else
                       
                       {
                       
                          if(
    file_exists($FileDir."/".$id))
                          
                          {
                          
                              include(
    $FileDir."/".$id);
                          
                          }
                          
                          else
                          
                          {
                          
                              echo 
    "[*][b]$Start_page non è stato trovato! 

    [/b]"
    ;
                          
                          }
                       
                       }
          
          
          
          

    ?>
    e per aprire i collegamenti basta che l'indirizzo a ?id=nome della pagina senza l'estensione visto che fa il controllo di tutte le estensioni

    olevo sapere se c'era qualcosa che non andava o se potevo fare qualcosa per migliorare

  2. #2
    ehm...cosi lo script può essere trapanato subitissimo, oltre al fatto che prima di includere fai un doppio controllo inutile

    inoltre ti conviene stabilire a priori quale può essere il tipo di pagina da includere, in modo che elimini tutte le altre, dato che potrebbe essere abbastanza pericoloso


    prova a mettere in id

    ../index


  3. #3
    non è che me lo corregeresti? perfavore

  4. #4
    ti ho dato svariate chiare indicazioni e qualche altra meno chiara...è importante che lo fai tu in modo che impari e capisci come correggere ... altrimenti ... la prossima volta ... ricadrai nello stesso errore :\

    sistema il codice e poi ripostalo ))

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    185

    perche dici che é trapanabile?

    perche dici che é trapanabile, ti va di spiegarmi i bug, peche sto facendo anche io un sistema simile, partendo dall'articolo della sezione PRO, ma ho dubbi sulle possibili vulnerabilità.

  6. #6
    leggi quello che ho detto capisci il perché

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    185
    sembra di essere a telemike, allora ci provo....

    allora anche caratteri speciali e percorsi nella variabile id, consente malintenzionato di turno di inserire per esempio config.php e leggersi il classico file di configurazione contenente di solito dati particolari????

    ho indovinato?

  8. #8
    [supersaibal]Originariamente inviato da tntgiallo
    sembra di essere a telemike, allora ci provo....

    allora anche caratteri speciali e percorsi nella variabile id, consente malintenzionato di turno di inserire per esempio config.php e leggersi il classico file di configurazione contenente di solito dati particolari????

    ho indovinato? [/supersaibal]
    +/- è cosi

    se vuoi essere sicuro al 100% puoi estrarre dal database le pagine valide ... ad es dall'elemento "page" leggi un valore ... e dal db estrai il file php corrispondente ... ovviamente premurati di eseguire l'escape di page usando mysql_escape_string prima di passarlo alla query ... questo è il sistema + sicuro ... altrimenti basta che verifichi che il file incluso debba risiedere in una data directory, o per meglio dire che dato file non provi a cambiare directory ))

    quindi ...
    if (basename($_GET['page']) != $_GET['page']) die('TENTATIVO DI HACKING!!!');

    vai a leggere sul manuale php cosa fa basename
    www.php.net/basename

    ))

    studia e approfondisci la cosa xche a me tante volte mi è capitato di trovare siti con GRAVISSIME vulnerabilità che potevano compremettere non solo il sito, ma la macchina stessa!

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    185
    quindi riassumendo se ho capito bene:

    - usare un db, con all'interno la codifica delle pagine, per evitare che uno inserisca la pagina direttamente (questo lo pensavo anche io, perche permette di crare anche un menu dinamico, piu gestibile)

    -usare il basename, per estrarre il nome , cosi qualsiasi cosa uno inserisca tipo alberature o cose varie, viene preso solo la parola finale senza la desinenza:
    esempio:
    http://www.pippo.it/index.php?page=/...ser/config.php
    il base name prende solo "config", evitando che uno furbamente cerchi di caricare sottocartelle.

    - uso il "mysql_escape_string" per leggere dal database i caratteri di escape , come la "/" e evitare che in get legga male l'indirizzo; anche se sarei piu dell'opinione di dedicare una cartella per le pagine e non fare sotto cartellamenti.

    quindi userei questo controllo come indicato nell'articolo della sezione PRO di html:

    Codice PHP:
    if(isset($_GET['page'])){ //pagina passata via parametro
        
    $p=$_GET['page'];
        if(
    $p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists($p.".php"))
            
    $p="error"//pagina di errore
        

    Che ne dici fila il discorso?

  10. #10
    ma io non voglio usare db

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.