Non esporre la password in chiaro in un file .php

di il
4 risposte

Non esporre la password in chiaro in un file .php

Sto testando un progetto su Docker. Per essere certo che tutto funzioni uso questo script:
			
<?php
$host = 'serviziomysql';
$user = 'nomeutente';
$pass = 'password';
$conn = new mysqli($host, $user, $pass);
if ($conn->connect_error) {
   die("Connessione fallita: " . $conn->connect_error);
} else {
   echo "Connessione al database eseguita con successo!";
}
?>
che mi serve per verificare che il file .php su Apache riesca a connettersi al DB.
In caso di errori, per esempio la password inserita è errata, il programma va in crach ed espone la password nel browser.
Come posso correggere questo codice per essere certo che nessuno possa mai risalire alla password presente nel file?
Il file .php verrà sostituito in futuro da un CMS ma per ora vorrei una soluzione robusta e sicura per testare il funzionamento dei vari servizi su Docker.
Grazie

4 Risposte

  • Re: Non esporre la password in chiaro in un file .php

    Ciao, io faccio cosi :
    ho un file include con le impostazioni generali (sempre incluso) con questi comandi :

    define("DEBUG_MODE",true);

    DEBUG_MODE è uguale a TRUE sulla mia macchina, a false sul server
    if (DEBUG_MODE) { error_reporting(E_ALL);} else { error_reporting(0);}

    Nessun messaggio di errore o warning viene mostrato a video
    Di sicuro esistono altri modi più eleganti ma questo funziona.
    Ciao
  • Re: Non esporre la password in chiaro in un file .php

    Questo codice è abbastanza sicuro?
    <p class="blue"><?php include 'test-connessione.php'; ?></p>
    <?php
    	try {
    		$mostra_avvisi = false;
    		define("DEBUG_MODE",$mostra_avvisi);
    		$host = 'mysql';
    		$user = '*******';
    		$pass = '*******';
    		$conn = new mysqli($host, $user, $pass);
    		if ($conn->connect_error) {
    			if(DEBUG_MODE){
    				die("Connessione fallita: " . $conn->connect_error);
    			}else{
    				echo "Connessione fallita.";
    			}
    		} else {
    			echo "Connessione al database eseguita con successo.";
    		}
    	} catch(Exception $e) {
    		if(DEBUG_MODE){
    			die("Connessione fallita: " . $conn->connect_error);
    		}else{
    			echo "Connessione fallita.";
    		}
    	}
    ?>
  • Re: Non esporre la password in chiaro in un file .php

    Ciao, temo che non mi sono spiegato
    Premesso che <p class="blue"><?php include 'test-connessione.php'; ?></p>
    non ha alcun senso, provo a spiegarmi meglio.

    Php mostra i messaggi di warning/errore in base alla impostazione del parametro passato al comando
    error_reporting(), il parametro come chiaramente indicato sul manuale di PHP può essere :
    error_reporting(0); NESSUN MESSAGGIO
    error_reporting(E_NOTICE); SEGNALA VARIABILI NON INIZIALIZZATE
    error_reporting(E_ALL); SEGNALA ERRORI E VARIABILI NON INIZIALIZZATE
    è possibile un mix dei parametri.

    Quindi se non vuoi mostrare NULLA in caso di errore devi usare il comando
    error_reporting(0) al contrario devi usare
    error_reporting(E_ALL), tutto qui.

    Mi pare però che tu non abbia chiaro l'argomento.

    Di norma ogni applicazione, non è obbligatorio ma consueto, ha un file php con i settaggi generali
    che viene incluso in ogni form, il mio file,ad esempio, si chiama base.php, in questo file ho le due righe
    define("DEBUG_MODE",true);
    if (DEBUG_MODE) { error_reporting(E_ALL);} else { error_reporting(0);}

    la prima definisce la costante DEBUG_MODE = true
    la seconda controlla il valore della costante e con un IF e setta il valore desiderato, se TRUE significa che
    sono in modalità DEBUG (sviluppo) e voglio che PHP mostri tutti gli errori ed i warnig, se NON SONO in tale
    modalità non voglio, in caso di errore o warning, che PHP invii messaggi.

    Potevo anche fare così
    error_reporting(E_ALL); error_reporting(0); e poi
    premettere // al comando non desiderato o cancellarlo.

    Si tratta di gusti personali, la cosa vera è inserire IL COMANDO con l'opzione desiderata.

    Come faccio io l'ho scritto tu puoi fare come preferisci, con un include, aggiungendo la riga di comando
    al tuo script ... come preferisci.

    Se usi un file include dovrai modificare il parametro una sola volta per tutta l'applicazione, altrimenti dovrai
    modificare n files.

    $mostra_avvisi = false;
    define("DEBUG_MODE",$mostra_avvisi);

    non ha senso logico vediamo il perché :
    alla riga uno assegni il valore false alla variabile $mostra_avvisi
    alla riga due assegni alla costante DEBUG_MODE il valore di $mostra_avvisi
    ora hai due valori .... che non ti servono a NULLA.... il comando da utilizzare è
    error_reporting(parametro)
    quindi manca il comando con il parametro ovvero
    error_reporting($mostra_avvisi) o error_reporting(DEBUG_MODE)
    lavoro doppio e inutile.
    Mi scuso se sono stato poco chiaro o saccente, non era mia intenzione, mi permetto
    però un suggerimento, esiste un manuale in linea di PHP molto ben fatto dagli una
    occhiata
  • Re: Non esporre la password in chiaro in un file .php

    Ok grazie mille, ora ho capito tutto
Devi accedere o registrarti per scrivere nel forum
4 risposte