
Moderatore: Staff


giberg ha scritto:Sta diventando molto interessante il thread. Prendo appunti per ripasticciare nel mio sito. Grazie ragazzi!


conraid ha scritto:IMHO mai includere un file con un nome preso da una variabile non controllata.

/* se la pagina richiesta è valida settala */
if(in_array($_GET['page'], $pages)){
$page = $_GET['page'];
}

puzuma ha scritto:conraid ha scritto:IMHO mai includere un file con un nome preso da una variabile non controllata.
in realtà il controllo c'è, guarda meglio l'inizio del file index.php e ricorda che tutte le richieste passano per quel file.

conraid ha scritto:Chi mi assicura che un utente non provi a lanciare direttamente html_home.php?
Sarà una possibilità remota ma esiste. E comunque per questo avevo usato l'espressione "nella mia umile opinione", perché è una precauzione in più che io prenderei, tutto qui.
) perchè tale file andrebbe messo in directory diversa dalla "document root" del server in modo che sia solo possibile includerlo e non eseguirlo, solo che l'esempio mi diventava troppo complicato. Per fare le cose per bene l'unico file php nella document root dovrebbe essere index.php.
puzuma ha scritto:conraid ha scritto:Chi mi assicura che un utente non provi a lanciare direttamente html_home.php?
Sarà una possibilità remota ma esiste. E comunque per questo avevo usato l'espressione "nella mia umile opinione", perché è una precauzione in più che io prenderei, tutto qui.
ottima osservazione, in realtà ho fatto un po' il furbetto (e tu mi subito scoperto) perchè tale file andrebbe messo in directory diversa dalla "document root" del server in modo che sia solo possibile includerlo e non eseguirlo, solo che l'esempio mi diventava troppo complicato. Per fare le cose per bene l'unico file php nella document root dovrebbe essere index.php



conraid ha scritto:Ma mettiamo che devi costruire un software da distribuire. Prendi il tar.gz e lo scompatti in una dir, solitamente funzionano così. E fuori la root difficilmente puoi scrivere file se non ti danno il permesso (metti sei in hosting)
Ecco che questi controlli diventano essenziali, anche perché gli utenti, essendo il software free, sono a conoscenza dei file, dei loro nomi e della loro struttura.


puzuma ha scritto:se qualcuno poi è interessato all'argomento apraimo un altro thread o inaguriamo la sezione della wiki come dice conraid.

<?php
require("cFormsTemplate.php5");
$tpl = new cFormsTemplate(dirname(__FILE__)); // istanzia l'oggetto template facendolo puntare alla dir corrente
$tpl->load_file("template.html", "main"); // carica il template chiamato "template.html" dalla dir corrente
$tpl->set_var("selected_" . basename($_SERVER["SCRIPT_NAME"], ".php5"), "selezionato"); // imposta la variabile relativa al menù selezionato
$tpl->pparse("main", false); // processa il template e lo visualizza
?>
<li class="{selected_index}"><a href="index.php5">Home</a></li>
<li class="{selected_chisiamo}"><a href="chisiamo.php5">Com'è nato</a></li>
<li class="{selected_comenato}"><a href="comenato.php5">Com'è nato</a></li>
<li class="{selected_copioni}"><a href="copioni.php5">Copioni</a></li>

giberg ha scritto:Era proprio quello che volevo dire io. E' interessante l'argomento e interromperlo così lascia l'acquolina in bocca, soprattutto per i neofiti.
E' utile capire come tener conto della sicurezza e quindi posizione dei file, controlli ecc. nella progettazione di un sito che fa uso di php.
ini_set( "include_path", ini_get('include_path').":../lib" );
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ public/index.php
RewriteRule ^(styles|javascripts|images)/(.*)$ public/$1/$2



aschenaz ha scritto:@ niutari
Prova a validare l'accessibilità di una pagina con quel menu...



Visitano il forum: Nessuno e 2 ospiti