- Home
- Categorie
- Coding e Sistemistica
- PHP
- Proteggere pagina php con password
-
Proteggere pagina php con password
Ciao a tutti,
vorrei proteggere una pagina php in maniera più sicura possibile.
Dispongo sia di supporto php che di MySQL.
Come posso fare?Grazie mille
-
Tutorial area privata:
http://www.giorgiotave.it/forum/php-mysql/83033-tutorial-area-privata.html#post512240
puoi adattarlo alle tue esigenze togleindo la registrazione einserendo tu gli autorizzati nella tabella oppure con htaccess:
http://www.sastgroup.com/tutorials/proteggere-un-file-con-password-usando-il-file-htaccess
-
Grazie mille.
Tra i 2 tu quale consigli?
-
Se devi inserire parecchi utenti, sicuramente è più facile da gestire in un database quindi la prima... ma a livello di sicurezza per me sono identici...
-
Ciao Thedarkit,
Ho il seguente problema. ho creato una sessione, l'ho protetta e fino qua tutto bene. Infatti la pagina di benvenuto al sito, se sei loggato si vede se non lo sei ti rimanda direttamente al login.php Il punto è questo. Dovrei inserire un pulsantino di logout. Perchè ho fatto un altro file logout, ma ogni volta lo devo far girare, invece voglio dare la possibilità di cliccare su questo pulsantino e di uscire direttamente. Distruggendo la sessione. Nella pagina di benvenuto, c'è il seguente richiamo: require_once'paginaprotetta.php'; così mi permette di proteggere la pagina. Però, stranamente, se vado a mettere il pulsantino, non me lo fa visualizzare. perchè ??? Ti posto il codice di come sono strutturare per avere un'idea. Se mi puoi aiutare te ne sarei grato.
Allora questo è il login.php
[PHP]
<?php
require_once("connetti.php");
require_once("data.php");session_start();
if(isset($_SESSION['utente'])) {
$username =$_SESSION['utente'];
$qry= "select * from utenti where username = '".$username."'";
// echo "AAAAA".$qry."BBBB";
$result = mysql_query($qry)or die (mysql_error());
$riga = mysql_fetch_assoc($result);
echo "<center> <h1> <br> Benvenuto ".$riga['nome']."!";
}
else
{
if(isset($_POST['log']))
{
error_reporting(E_ALL ^ E_NOTICE);$username = $_POST['username']; $password = mysql_real_escape_string(md5($_POST['password'])); $result = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password' ")or die (mysql_error()); $controllo = mysql_num_rows($result); if($controllo > 0) {$_SESSION['utente'] = $username; header("location:benvenuto.php"); } else { echo " <h1> <center> <br> La password e/o lo username sono sbagliati. Riprovare grazie !!! </center> </h1>"; } } else{ echo "<form action='' method='POST'> <center> <br> <br> <br> <br> Username: <input type='text' name='username'> <br> <br> Password: <input type='password' name='password'> <br> <br> <input type='submit' name='log' value='Loggati'> <input type='submit' name='reg' value='Registrati'> </center> </form>"; }
}
$userreg = mysql_num_rows(mysql_query("SELECT * FROM utenti"));
echo "<b> <br> <br>".$userreg."</b> utenti registrati</div>";
if(isset($_POST['reg']))
{
header("Location:iscrizione.php");
}
?>[/PHP]
Le prime due ricghe, richiama la visualizzazione della data e la connessione al db. Queste due righe sono riportate in ogni file php creato.
Questo è il file paginaprotetta.php
[PHP]
<?php
session_start();
session_regenerate_id(true);
// Controllo accesso
if(isset($_SESSION['utente'])) {
$nome = mysql_real_escape_string(strtolower(trim ($_POST['nome']))); echo "<h1> <br> <center>";
// echo "Ciao ".$_SESSION['utente']."!";
echo "</h1> </br> </center>";header('location:login.php');
exit;
}
else
{
//echo "Benvenuto ".$_SESSION['$login'];
}?>
[/PHP]Ed infine c'è la pagina di benvenuto.php che dovrebbe non solo visualizzare benvenuto pincopallino quando ti connetti e questo la, ma anche il tasto logout (questo non me lo visualizza).
Ecco il codice benvenuto.php
[PHP]
<?php
require_once 'paginaprotetta.php';if(!isset($_POST['esci'])){
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<center>
<form action= '' method="POST"><input type="submit" name="esci" value="Logout" >
</form>
</head>
<body>
<?php}else{ session_start();
$_SESSION = array();
session_destroy();
echo "<center> <h1> Addio !!!! Alla prossima </center> </h1>";
} ?>
</body>
</html>[/PHP]
Ovviamente, se tolgo il richiamo sopra in alto ossia quetso: require_once 'paginaprotetta.php'; il tasto logout si vede, ma il benvenuto no. Dove sbaglio ???? Spero in un tuo aiuto al più presto grazie. Sono rimasto bloccato per sta cosa.
-
sul tuo codice postato ci sono alcuni gravi errori di vulnerabilità
pulisci bene la variabile $username perchè permette di fare attacchi di tipo sql injection
per quanto riguarda il tasto logout
prova a correggere questo:
[HTML]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<center>
<form action= '' method="POST"><input type="submit" name="esci" value="Logout" >
</form>
</head>
<body>[/HTML]con questo
[HTML]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<center>
<form action= '' method="POST"><input type="submit" name="esci" value="Logout" >
</form>[/HTML]