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

    Come Prottegersi da hack con il Remote File Include

    Salve,

    Ho un sito che al posto dei frames utilizza la funzione include, per mettere contenuto, menu ecc utilizzando diversi files e facendoli vedere nella stessa pagina.

    <?
    if (!$hm) { $hm="home";}
    @include ("$hm.php");
    ?>


    Il problema di questo sistema è che rende il sito vulnerabile ad intrusione sfruttando proprio la funzione include; io me ne sono accorto solo dopo aver subito una e più di queste intrusioni durante le quali ho visto modificati e aggiunti files nel mio sito ecc.

    Per risolvere il problema ho creato un semplice filtro alla variabile da fare eseguire prima della funzione su scritta:

    <?php
    function pulizia_nome(&$nm){
    $x="";
    for($i=0;$i<=strlen($nm);$i++){
    switch(strtolower(substr($nm,$i,1))){
    case 'a': $x .= 'a'; break;
    case 'b': $x .= 'b'; break;
    case 'c': $x .= 'c'; break;
    case 'd': $x .= 'd'; break;
    case 'e': $x .= 'e'; break;
    case 'f': $x .= 'f'; break;
    case 'g': $x .= 'g'; break;
    case 'h': $x .= 'h'; break;
    case 'i': $x .= 'i'; break;
    case 'j': $x .= 'j'; break;
    case 'k': $x .= 'k'; break;
    case 'l': $x .= 'l'; break;
    case 'm': $x .= 'm'; break;
    case 'n': $x .= 'n'; break;
    case 'o': $x .= 'o'; break;
    case 'p': $x .= 'p'; break;
    case 'q': $x .= 'q'; break;
    case 'r': $x .= 'r'; break;
    case 's': $x .= 's'; break;
    case 't': $x .= 't'; break;
    case 'u': $x .= 'u'; break;
    case 'v': $x .= 'v'; break;
    case 'w': $x .= 'w'; break;
    case 'x': $x .= 'x'; break;
    case 'y': $x .= 'y'; break;
    case 'z': $x .= 'z'; break;
    case '-': $x .= '-'; break;
    case '_': $x .= '_'; break;
    case '0': $x .= '0'; break;
    case '1': $x .= '1'; break;
    case '2': $x .= '2'; break;
    case '3': $x .= '3'; break;
    case '4': $x .= '4'; break;
    case '5': $x .= '5'; break;
    case '6': $x .= '6'; break;
    case '7': $x .= '7'; break;
    case '8': $x .= '8'; break;
    case '9': $x .= '9'; break;
    }
    }
    $nm = $x;
    }
    ?>

    In questo modo sono sicuro non si possa far caricare nessun file esterno al mio sito, e allo stesso tempo sono libero di dare tutti i nomi che voglio ai miei files basta che abbiano i caratteri elencati nello switch.

    Qualcuno saprebbe dirmi se c'è un metodo migliore per tenere il sito al sicuro, e saprebbe dirmi se questo sistema rallenterà la visualizzazione di ogni pagina?
    ed anche visto che va messo solo in due files è meglio salvare la funzione a parte e poi caricarla o metterlo direttamente nelle pagine?

    grazie

  2. #2
    Non mi piace troppo la strada che hai scelto...però al posto di usare quello switch incasinato prova con:

    Codice PHP:
    $nm preg_replace("#[^a-z0-9_-]#"""$hm); 
    questa espressione regolare elimina dalla stringa $hm tutti i caratteri che non sono elencati nell'espressione.

    Penso ti faccia risparmiare tempo e righe di codice.
    Administrator of NAMDesign.Net

  3. #3
    Ok grazie 1000!!!!

    Sei il mio salvatore, funziona ed è certamente il sistema più leggero e veloce che si possa utilizzare.

    Se vuoi potresti spiegarmi meglio, per cosa intendi "Non mi piace troppo la strada che hai scelto..."?

    Intendi l'uso di include per creare una pagina a frame, o quella presa come contromisura alle intrusioni?

    Per il momento ho risolto quella delle stringa a links esterni, ma mi è rimasto il poblema delle intrusioni tramite upload di files immagine.

    Ciao e grazie ancora per la soluzione datomi.

    Il sito è un mio passatempo: www.free-italyguide.com, non so cosa gli sia stato fatto oltre a quello che ho tolto e corretto e riaggiustato dopo l'ultima intrusione, ancora gli devo fare un conttrollo completo.

  4. #4

  5. #5

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.