Originariamente inviato da daniele_dll
Hola,

volevo un consiglio, magari è una cosa stupida, ma sono abbastanza attento a questo tipo di problematica.

Premetto che questo check lo sto leggermente modificando rispetto a quello che uso nel mio framework ove il tutto dipende dal database mentre qui il file da includere deriva da un parametro in GET.

Si, lo so, è pericoloso, ma sto scribacchiando il mio pannello di controllo per l'hosting sul mio dedicato e non mi va di buttarci su tutto il mio framework con tutto quanto, richiede abbastanza tempo per lo sviluppo.

Come si può vedere, qui l'azione, ovvero il file da includere, deriva da $_GET['action']. Il check sull'esistenza dei file e sulla posizione del file lo eseguo tramite realpath.

Secondo voi è abbastanza sicuro?

Qui c'è il codice:
codice:
if (isset($_GET['action']) === false)
{
    $action = 'Dashboard';
}
else
{
    $action = $_GET['action'];
}

$pathCheck = realpath('./Actions/' . $action . '.action.php');
if ($pathCheck === false || dirname($pathCheck) !== realpath('./Actions'))
{
    echo "errore!";
}
io seguo più o meno questo metodo, in realtà non faccio particolari verifiche, ma solo:

require(DIRECTORY.$action.".inc.php");

Se nella get mi mettono qualsiasi porcheria tipo "www.altrosito.com" non ho problemi (o fino ad ora almeno non ne ho avuti..

L'ideale magari sarebbe creare un'array di action valide e testarla con in_array, che dici?

ciao