Il reindirizzamento in htaccess fornisce una sicurezza sufficiente per le pagine sensibili?

12

Ho creato file con i dettagli di accesso al database MySQL. Usando .htaccess , reindirizzo ogni utente da /Config/config.php a /index.php . Mi chiedo se tutto questo è abbastanza sicuro - questo significa che tutto è sufficiente per impedire agli utenti di visualizzare /Config/config.php ?

    
posta vakus 05.03.2017 - 19:32
fonte

4 risposte

28

Questo può fornire una sicurezza adeguata, se configurato correttamente.

Posso pensare a un difetto comune: con Apache e le regole di riscrittura, è spesso possibile costruire un URL che punta allo stesso file e non viene reindirizzato. Ad esempio, la richiesta di reindirizzamenti /Config/config.php , ma la richiesta di //Config//config.php non lo fa. Questo perché la regola di riscrittura corrisponde a un URL esatto, non a nessuna variazione.

Un altro errore comune quando si utilizza il reindirizzamento per la sicurezza è l'invio dell'intestazione al reindirizzamento, ma non impedisce il rendering della pagina. Un utente malintenzionato può quindi accedere alle pagine rimuovendo l'intestazione Location . Tuttavia, si tratta in genere di un errore nell'applicazione e non quando si utilizza Apache per eseguire il reindirizzamento.

Un modo migliore è di posizionare il file di configurazione all'esterno della web root. Quindi hai index.php in una sottodirectory public e config.php al di fuori di questa directory. Ciò riduce la possibilità di esporre la configurazione.

    
risposta data 05.03.2017 - 20:44
fonte
11

Il modo in cui config.php è impostato non dovrebbe consentire alle persone di visualizzare le credenziali anche se hanno accesso a questo file tramite il browser web.

Considera il seguente file di configurazione, preso a prestito da questo esempio ;

<?php
return (object) array(
    'host' => 'localhost',
    'username' => 'root',
    'pass' => 'password',
    'database' => 'db' );
?>

Se un utente dovesse navigare direttamente a questa pagina, verrebbe accolto con una schermata vuota. Questo perché nulla in questo script stampa effettivamente sulla pagina. Nessuna informazione sarebbe trapelata.

Ti suggerisco di configurare la tua configurazione in questo modo - in modo che, se per qualche motivo il tuo .htaccess fallisce, in realtà non ha importanza.

    
risposta data 06.03.2017 - 01:56
fonte
4

No.

Pensa ai seguenti scenari:

  1. Qualcuno riconfigura il server e disabilita il reindirizzamento. Ops. Il tuo .htaccess non ti protegge più.
  2. Qualcuno aggiunge una regola di reindirizzamento alla configurazione del server che annulla la regola di reindirizzamento nel file .htaccess. Nessuna gioia!
  3. Qualcuno riconfigura il server e disabilita i file htaccess. Di nuovo, nessuna protezione più.
  4. Qualcuno cancella il file .htaccess per errore. Di nuovo, nessuna protezione più.

Il numero 4 mi è accaduto qualche anno fa mentre stavo migrando su un altro server - ho dimenticato di copiare il file .htaccess. Per fortuna, l'ho notato poche ore dopo e non è stato fatto alcun danno. Ma gli errori si verificano sempre. Dovresti pianificare per loro.

Tutti questi problemi si applicano a qualsiasi soluzione implementata utilizzando i file htaccess. Se hai accesso alla configurazione del tuo server, inserirò le tue direttive lì. Proteggerei anche il tuo endpoint di configurazione con un ulteriore livello di autenticazione di base HTTP (supponendo che tu stia utilizzando https per raggiungerlo, ciò aggiunge considerevole sicurezza).

Se config.php è homegrown (piuttosto che parte di un pacchetto software di terze parti), farei il reindirizzamento della pagina di accesso all'interno dello script php .

    
risposta data 05.03.2017 - 19:55
fonte
0

Come indicato in precedenza, solo il reindirizzamento non ti aiuterà perché verrà reindirizzato solo quando lo accederai tramite browser ma, come sai, è ancora accessibile includendolo in un file, come in PHP usando include e amp ; require che potresti fare adesso. Se qualche utente è in grado di caricare file come questo sul tuo server, allora non è così difficile lavorare. Quindi è meglio metterlo al di fuori della cartella del tuo sito web e inoltre non concedere .htaccess di tutti i diritti utilizzando Allowoverride all .

Puoi anche rimuovere l'accesso diretto alla directory specificata se non è possibile mettere all'esterno public_html .

    
risposta data 06.03.2017 - 14:48
fonte

Leggi altre domande sui tag