Perché proteggere i file con informazioni sensibili con .htaccess?

2

Mi è stato insegnato che un passo importante verso la sicurezza di un sito web (principalmente con PHP) era quello di memorizzare tutte le informazioni sensibili come le informazioni sulla connessione al database, la generazione di sale, ecc. in un file o cartelle separate e utilizzare .htaccess con qualcosa come deny from all per impedire l'accesso a tali informazioni, e in caso contrario l'accesso non autorizzato al sito / database.

La mia domanda è, in quale misura è utile? Nei miei ambienti web questi file non sono accessibili / scaricati (che io sappia). Non esiste un file explorer basato sul web per accedere a tali informazioni e fintanto che le informazioni non vengono stampate sullo schermo, perché l'accesso a tali file deve essere limitato oltre a questo?

    
posta sharf 18.11.2014 - 03:44
fonte

1 risposta

6

Quindi stai memorizzando le password del database e i segreti crittografici in un file all'interno della web root, probabilmente perché il web hosting di fascia bassa non ha altri archivi per questi segreti. Immettendo il nome di questo file come percorso in una richiesta GET HTTP recupererà il suo contenuto. Anche se fornisci "nessun esploratore di file basato sul web", un utente malintenzionato potrebbe comunque finire a indovinare correttamente il nome di questo file chiave segreto a meno che il suo nome non sia crittograficamente casuale. O qualcuno che conosce il nome del file potrebbe trapelare il nome a un utente malintenzionato.

Il file .htaccess in Apache HTTP Server, o file analoghi in altri server web, è progettato per impedire l'accesso diretto a un file attraverso il web anche se un client conosce il suo nome. Questo è utile in due situazioni:

  • Supponiamo di archiviare segreti in un file JSON caricato dallo script PHP con file_get_contents() all'avvio. Il .htaccess bloccherebbe un utente che digita l'URL di questo file JSON.
  • Supponiamo di archiviare segreti in uno script PHP contenente assegnazioni a variabili globali, che il tuo script PHP include con require_once all'avvio. Ad esempio, LocalSettings.php di MediaWiki utilizza questo approccio. Normalmente, uno script con impostazioni variabili non riuscirebbe a produrre alcun output. Ma ho visto situazioni occasionali in cui mod_php o il gestore CGI non riesce a caricare accidentalmente, il che fa sì che Apache invece serva i file PHP come testo normale, inclusi i tuoi segreti. Il .htaccess bloccherebbe un utente che digita l'URL di questo file PHP.

Ma fai attenzione: .htaccess non impedisce l'accesso attraverso uno script, ad esempio se uno script accetta un nome file come argomento e restituisce il contenuto di quel file. Assicurati quindi che tutti gli script che leggono i file con nomi di variabili, come gli script di pubblicazione delle immagini, disinfettino i loro percorsi canonicalizzandoli ( realpath() e amici) e quindi limitandoli a una directory specifica.

    
risposta data 18.11.2014 - 04:10
fonte

Leggi altre domande sui tag