Come proteggere un file login.php? [chiuso]

-2

Ho un sito web costruito a mano, e sto cercando di costruire un cms / pannello di amministrazione, e il mio nome utente e password, non sono memorizzati in un database, ma, in un file di due configurazioni come visto di seguito.

index.php

<?php 
session_start(); 

define('DS',  TRUE); // used to protect includes
define('USERNAME', $_SESSION['username']);
define('SELF',  $_SERVER['PHP_SELF'] );

if (!USERNAME or isset($_GET['logout']))
 include('login.php');

// everything below will show after correct login 
?>

login.php

<?php defined('DS') OR die('No direct access allowed.');

$users = array(
 "user" => "userpass"
);

if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
}

if(isset($_POST['username'])) {
    if($users[$_POST['username']] !== NULL && $users[$_POST['username']] == $_POST['password']) {
  $_SESSION['username'] = $_POST['username'];
  header('Location:  ' . $_SERVER['PHP_SELF']);
    }else {
        //invalid login
  echo "<p>error logging in</p>";
    }
}

echo '<form method="post" action="'.SELF.'">
  <h2>Login</h2>
  <p><label for="username">Username</label> <input type="text" id="username" name="username" value="" /></p>
  <p><label for="password">Password</label> <input type="password" id="password" name="password" value="" /></p>
  <p><input type="submit" name="submit" value="Login" class="button"/></p>
  </form>';
exit; 
?>

Codice sorgente: php - Script di accesso facile senza database - Stack Overflow

What is the best way to secure those file.

    
posta blade19899 06.11.2013 - 13:38
fonte

2 risposte

4

Owen ha coperto alcune modifiche ragionevoli, ma a meno che il codice non sia un esercizio di classe usa e getta dove non è possibile utilizzare un database, l'idea di archiviare i dettagli utente in un file PHP è fondamentalmente errata e dovrebbe essere affrontata ora prima che sia troppo tardi. Le password non dovrebbero essere archiviate in testo normale e gestirle con hash archiviati in questo modo sarà al massimo ingombrante, ma come faranno gli utenti a cambiare le loro password, ad esempio?

Dovresti anche prendere in considerazione l'immagine di sicurezza più grande e quale impatto ci sarà quando il tuo (o il tuo utente finale) si troverà nel server. Come fermerai una modifica apportata al tuo codice per registrare silenziosamente i dettagli utente inseriti in un file per la successiva raccolta da parte di un hacker? (divulgazione: sono associato a ionCube)

    
risposta data 06.11.2013 - 14:13
fonte
3

Nessuno di questi è l'ideale, ma se hai intenzione di memorizzare i dettagli dell'account in un file PHP, direi che i seguenti passaggi sono minimi:

  • Non memorizzare la password in testo semplice. Realisticamente, questa è solo un'ulteriore precauzione, ma dovresti comunque prenderlo.
  • Tieni l'account.php fuori dalla radice del sito, da qualche parte a cui non è possibile accedere tramite un URL diretto. Se il tuo sito è in / home / user / www / http_root o qualcosa del genere, allora tenere l'account.php in / home / user / www sarebbe una buona idea.
  • Definisci una costante per mostrare che la tua applicazione è in esecuzione, e avvia il tuo file account.php con una linea che controlla questa costante, o muore se la costante non è impostata.

Tutto questo è solo un vago miglioramento della sicurezza, piuttosto che una pratica migliore.

    
risposta data 06.11.2013 - 13:47
fonte

Leggi altre domande sui tag