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