View Single Post
Trådstarter
79
Nok en gang har jeg jobbet videre med CMS'et. Denne gangen har jeg tatt fatt for meg selve innloggingen, både back-end og front-end, samt en mulighet for å generere et nytt passord dersom du glemmer ditt gamle.

Kort informasjon om koden jeg bruker:
- Alle passord er bruker password_hash sin default, BCRYPT.
- All utsendt e-post går via PHPmailer
- Det er brukt Ajax på alle input feltene for å gjøre sidene mindre hakkete, og bedre å utforme rent design messig.

Som sikkerhet kjører jeg følgende session:

HTML-kode

function sec_session_start(){
    $session_name = 'cms_session';
    $secure = false;
    $httponly = true;
    if(ini_set('session.use_only_cookies', 1) === FALSE) {
        header("Location: /error/");
        exit();
    }
    $cookieParams = session_get_cookie_params();
    session_set_cookie_params(3600,$cookieParams["path"],$cookieParams["domain"],$secure,$httponly);
    session_name($session_name);
    session_start();
    session_regenerate_id(false);
}
function login_check($db_connect) {
    // Check if all session variables are set 
    if (isset($_SESSION['user_id'], $_SESSION['login_string'])){
        $user_id = $_SESSION['user_id'];
        $login_string = $_SESSION['login_string'];
        $user_browser = $_SERVER['HTTP_USER_AGENT'];
        $sql = "SELECT user_password FROM users WHERE user_id = :userid LIMIT 1";
        $results = $db_connect->prepare($sql);
        if ($results->execute(array(':userid' => $user_id))){
            $check_results = $results->fetch();
            $login_check = $results->rowCount();
            if ($login_check != 0){
                $login_check = hash('sha512',$user_id.$user_browser);
                if ($login_check == $login_string) {
                    // USER IS LOGGED IN
                    return true;
                } else {
                    return false;
                }
            } else { 
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}
Bilder av innloggingen, glemt passord og e-postene
Innlogging
http://bildr.no/thumb/Z2hEcGNN.jpeg
Innlogging

http://bildr.no/thumb/RXVIcDRV.jpeg

Glemt passord
http://bildr.no/thumb/VDRZclhB.jpeg
Glemt passord mail
http://bildr.no/thumb/VytGeEFY.jpeg
Nytt passord mail
http://bildr.no/thumb/NHhRQ0dl.jpeg

Tar gjerne imot forslag til hvordan jeg kan lage en sikrere session... litt usikker på hva som er best for å verifisere en bruker, men samtidig vite hva vedkommende har tilgang til.

Update:
Hele innloggingspanelet har også mulighet for flerspråkelighet, både i URL'en og i teksten på siden. Videre kan man også fritt bestemme under hvilken URL kontrollpanelet skal ligge. For eksempel, www.example.com/admin eller www.example.com/wp-admin (som Wordpress bruker som statisk).
Sist endret av infexxion; 5. mai 2016 kl. 18:30. Grunn: Automatisk sammenslåing med etterfølgende innlegg.