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.