Far diventare un file php privato

8 contenuti / 0 new
Ultimo contenuto
Far diventare un file php privato

Salve, vi spiego il mio problema:
Sul mio sito drupal (su server Apache) ho un file.php che fa delle query sul database e resituisce un foglio excel da scaricare o aprire contenente il risultato delle query. Fin qui tutto ok.
Ho creato delle regole che permettono quindi solo ad alcuni utenti, loggandosi, di visualizzare il link al file. Fin qui tutto ok.
Il problema è che chiunque (anonimo o non anonimo) scrivendo nell'url l'indirizzo al file.php (es. www.miosito.com/file.php) può accedere al file e quindi scaricare il foglio excel contenete dati sensibili.
La domanda che vi porgo è:
Esiste un modulo che può rendere private delle aree del sito? Dove per aree intendo file grezzi e non nodi, evidentemente questo file.php non è un nodo.
Vi ringrazio anticipatamente.

usare l'autenticazione basata su htaccess potrebbe essere una soluzione valida? Dai un occhiata all'articolo sul mio sito che spiega come proteggere sitidi sviluppo, si tratta poi di cambiare la drirectory, ma il procedimento è lo stesso, lunca cosa che non va bene è che devi digitare nuovamente la password.
L'alternativa potrebbe essere quella di travasare il codice dello script PHP in un nodo impostando come formato del testo PHP, in quel modo il tuo script è proprio un nodo e puoi usare i classici sistemi di protezione del nodo.

Ciao
Marco
--
My blog
Working at @agavee

L'idea del nodo mi piace molto di più anche perchè posso poi renderlo privato con le regole già esistenti. Problema: qual'è il procedimento? Avevo già intrapreso questa strada ieri sera ma senza successo. Come si crea un semplice nodo su drupal? In create content posso creare dei contenuti come pagina che poi vengono immagazzinati da drupal cone "node" ho provato quindi a creare una pagina con input format php ma non sono arrivato a nulla ho solo creato una pagina con il codice php visibile a tutti. Il punto è questo: io dovrei avere un link (che è visibile solo ad alcuni utenti, che ho già fatto attraverso le regole) che cliccandoci sopra mi manda in esecuzione il file.php (ma che non sia accedibile a tutti) oppure il codice di questo file inserito in un nodo. Il nodo mi sembra la strada giusta, ma... come si fa?

Crei una pagina, imposti come formato di input PHP e all'iinterno ci scrivi:

<?php
 
// ll tuo codice che genera il file
  // ....
  // Setto gli header per il tuo tipo di file
 
drupal_set_header('Content-type: image/png');
 
drupal_set_header("Expires: ". gmdate("D, d M Y H:i:s", time() + 300) ." GMT");
 
drupal_set_header("Last-Modified: ". gmdate("D, d M Y H:i:s") ." GMT");
 
drupal_set_header("Cache-Control: max-age=300");
 
// Invio il file al client
 
print $file;
?>

Dovrebbe essere sufficiente.

Ciao
Marco
--
My blog
Working at @agavee

Non conosco il motivo, ma da sempre lo stesso probema: mostra il codice php! cioè non lo esegue, mi mostra la pagina creata con il codice php che ho inserito. Ho messo input format php code.
C'è qualcosa che devo attivare? Non riesco a capire. Ho attivato il modulo php filter per avere tra gli input format il php code, cos'altro devo fare?

hai messo i tag

<?php
e
?>

all'inizio e alla fine?

Ciao
Marco
--
My blog
Working at @agavee

Ciao, ho risolto. Ho disabilitato il modulo TinyMce ho incollato il codice php e tutto è andato a buon fine. (Funziona anche senza il codice che mi hai postato poichè già nel mio codice php settavo gli header).
Grazie!!!!
Sai consigliarmi un differente editor di testo per drupal?
Grazie per quello che hai fatto.

Lascia configurato tinyMCE e disabilitalo per il form in cui devi inserire codice PHP.

Ciao
Marco
--
My blog
Working at @agavee