PHP, impedire l’esecuzione di un file tramite sessione

220px-PHP-logoSe hai bisogno di impedire l’accesso diretto ad un file perchè devi essere sicuro che venga invocato localmente e non dall’esterno del tuo sito, sei nel posto giusto.

Immaginiamo di avere questo scenario:

un file index.php che invia i campi di una form ad un secondo file function.php che li processa restituendo un risultato o espletando alcune elaborazioni. Il file function.php può essere richiamato dal file index.php perchè presente nello stesso spazio web ma anche da un url remoto esterno o dallo stesso file ma residente su un altro spazio web remoto. In questo scenario ambedue i files possono essere richiamati dall’esterno, ma mentre il file index.php rappresenta l’interazione con l’utente che dovrà immettere i dati nella form, il file function.php è quello che ricevendo i dati della form li processa quindi da punto di vista della sicurezza il più debole ma il più importante.

Per impedire l’accesso diretto al file function.php possiamo adottare una semplice quanto efficace escamotage utilizzando i cookies di sessione:
aggiungiamo al file index.php ad inizio pagina le seguenti istruzioni:

<?php

// avvia la sessione
session_start();

// registra un valore nella variabile di sessione codice
$_SESSION[‘codice’]=1;
?>

aggiungiamo al file function.php (e a tutti i file che vogliamo proteggere) ad inizio pagina le seguenti istruzioni:

<?php
// riavvia la sessione
session_start();

//controlla che sia impostata la variabile codice al valore aspettato e nel caso che non esista vuol dire che la chiamata non è passata dal file index.php ma da una provenienza non autorizzata

if($_SESSION[‘codice’]<>1) {
die(“Pagina non accessibile”);
}

 

Quanto riportato in questo articolo non è la SOLUZIONE PERFETTA ma è un ottimo metodo tra i possibili.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*
*

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.