2015-11-27 9 views
6

Sto eseguendo un servizio semplice in cui gli utenti devono effettuare il login per essere in grado di far funzionare funzioni speciali.

Il mio database MySql memorizza username, password e user_id.

Quando l'utente vuole effettuare il login, deve fornire il proprio nome utente e la password che sono pubblicati su profile.php.

Il profile.php fa un semplice controllo:

// Sanity Check 
if(empty($_POST['smart_email'])|| empty($_POST['smart_password'])) 
{ 

    echo 'Sorry, wrong login/passwd'; 
    exit; 
} 
else 
{ 
    // 
    $smart_email = $_POST['smart_email']; 
    $smart_password=$_POST['smart_password']; 

    // Check if registerd and password matches 
    if(DB_IsAuthorized($smart_email, $smart_password) == true) 
    { 
     // Obtain proper UserID from the database 
     $UserID    = DB_GetId($smart_email); 

     // set the session user_id variable 
     $_SESSION['user_id'] = $UserID; 


     // 
     // Display the User profile page 
     // 
    } 

} 

Da quel momento, ogni singola pagina che è user-correlati ha un assegno di user_id set in $_SESSION per scoprire se questo utente è stato effettuato l'accesso e è autorizzato.

if (isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']) && $_SESSION['user_id']>0) 
{ 
    // USER IS LOGGED IN 
} 

La domanda è: È questo $_SESSION['user_id'] controllo sufficiente a garantire le pagine dal NON gli utenti registrati?

+1

In realtà, sì, è sufficiente. Ma senza altre misure i tuoi visitatori sono stimabili per la maggior parte degli attacchi sul proprio account. Posso proporti di usare un framework e aquire ssl Sertificate per fare https. Non disprezzarlo! Le persone che creano framework hanno molta esperienza! A proposito, mi piace Yii, è piuttosto semplice :) – MaxXx1313

+1

Quando si tratta di proteggere le pagine del tuo sito, non penso che sia mai abbastanza che si possa fare. Tuttavia, penso che in generale un semplice controllo $ _SESSION' possa essere sufficiente. –

+0

Forse ero fuori tema all'inizio. Stai chiedendo se l'uso di '$ _SESSION' ti permetterà di bloccare il contenuto degli utenti non registrati; o quanto è sicuro '$ _SESSION' e sta entrando in aree di attacchi brute force, dirottamenti, ecc. – chris85

risposta

3

Questa domanda è troppo ampia ma la risposta semplice è no.

Innanzitutto, è necessario https per assicurarsi di proteggere gli utenti dagli hacker utilizzando firewall e altri strumenti di sicurezza necessari.

In secondo luogo, è necessario utilizzare .htaccess per cambiare le estensioni, dire spettacolo utente .html invece di .php

In terzo luogo, le sessioni possono essere dirottato facile da parte di hacker. Quindi cerca sempre di memorizzare valori di sessione crittografati invece di testo normale.

Ci sono molti più problemi da risolvere ma è troppo complesso e ampio.

+0

1) - questo è ovvio. 2) Perché mostro .html invece di .php? qual e il punto? 3) ha senso la risposta ** no ** è un po 'strana, ogni singola pagina dice usare $ _SESSION in PHP - presumo che ottenere questi 3 punti sia sicuro usare $ _SESSION allora. – PeeS

+4

Per quanto riguarda il punto 2, "la sicurezza per oscurità è una delle più deboli forme di sicurezza". -http: //php.net/manual/en/security.hiding.php – chris85

+0

Cambiare php in html ha dimostrato di ridurre gli hacker dagli attacchi.Questi punti sono sufficienti per $ _SESSION ma non per altri attacchi. E la risposta no, era per mostrare che il codice non è ben scritto. Ha bisogno di crittografia ed è anche incline alla semplice iniezione SQL. – Manikiran

Problemi correlati