consiglio sulla sicurezza

  • Creatore Discussione Creatore Discussione amhal
  • Data di inizio Data di inizio

amhal

Utente Attivo
17 Feb 2011
89
1
8
Ciao a tutti volevo sapere se conoscete un metodo non troppo complicato per essere sicuri nella navigazione delle pagine.
io associo un name al link che punta a una pagina di controllo, la seguente pagina fa una query su una tab nel db e confronta il name con
un campo, se esiste estrae il nome della pagina corrispondente es:

pag index.php
HTML:
<a href="controllo.php?name=articoli"> clicca qui </a>

pag controllo.php
PHP:
require_once('libreria/db_config.inc');
$var = $_GET['name'];
$query = "select nome from orari where identita = '$var' ";
$result = mysql_query($query, $db) or die ('impossibile connettersi al db');
$num_righe = mysql_num_rows($result);;
if ($num_righe > 0){
	while($row = mysql_fetch_assoc($result)){
	extract($row);
	$link = $nome;
	}
}
mysql_close($db);
header( "Location:".$link );

può essere valido come metodo?
grazie come al solito per l'aiuto
 
Ultima modifica di un moderatore:
In pratica controllo.php è una pagina di tramite che fa la verifica e poi, se la pagina ti risulta nel db, reindirizzi l'utente a quella url ?
Direi che non raggiungi il tuo obiettivo in questo modo, perché se un utente apre un link direttamente aggira la tua pagina di controlllo.

L'unico modo per essere sicuro è che in ogni pagina del tuo sito fai il controllo di esistenza sul database e, se non esiste, o lo rimandi ad una pagina di errore o fermi l'esecuzione dello script con un die().
 
grazie per aver risposto, è come dici tu, il controllo serve a quello, e lo faccio per evitare che puntando un link si sappia la pagina di destinazione.. ora provo il metodo che dici tu, ma volevo farti un'altra domanda: fare una query per ogni link per 'n' utenti, non rallenta la navigazione? grazie
 
Considera che ogni utente del tuo sito non apre in contemporanea 'n' link insieme. Mettere quella query in ogni pagina o in un link che ti gestisce gli accessi a tutte le pagine è equivalente in termini di peso.

Quanto alla questione prestazionale in se, una sola query di selezione non causa tutto quel peso (e mediamente impiega meno di 20 millisecondi ad essere eseguita), ma comunque dipende sempre dal volume del tuo traffico: se hai 5'000 utenti che contemporaneamente navigano il sito è un conto, se ne hai 50 ne è un altro.

Se temi che il traffico è tale da farti perdere una rilevante fetta di prestazioni puoi mettere il dato in cache in qualche modo, ad esempio puoi caricare alla prima visita dell'utente un elenco di link che è autorizzato a vedere nella sessione, in questo modo finchè naviga sul sito non eseguirai più altre query a quel fine.
 
ciao
io darei un occhio anche al al get, se uno scrive sul bw(metto gli spazi)
http :// www. tuo_sito.it / controllo.php?name=articoli' OR ''='
la tua query
$query = "select nome from orari where identita = '$var' ";
risulta
$query = "select nome from orari where identita = 'articoli' OR ''='' ";
quindi non so che ti riporta la select
quindi verifica il get
o nascondilo se ti serve con http://forum.mrwebmaster.it/snippet-php/36777-camuffa-valore-get.html
 

Discussioni simili