Jonthan ZeiermaN פורסם 2015 בינואר 5 Share פורסם 2015 בינואר 5 שלום,אני מנסה לחשוב על ייעול הקוד אימות התחברות שלי, אשמח להצעות ייעול / שיפור / אבטחה ולביקורת בונה. <?php##################################################################### Strating Sessions. #####################################################################session_start();##################################################################### Set Cases For Functions. #####################################################################switch ($_GET['page']){ case 'login': login(); break; default: login(); break;}################################################### $security_code = rand(000000,999999); ## $_SESSION['security_code'] = $security_code; ####################################################################### Strating Login Function. #####################################################################function Login(){ ################################################################################################ ## Require A DB Connection File. ## ################################################################################################ require_once ('db/connect.php'); ## ################################################################################################ if (isset($_POST['login_check'])) { ################################################################################################ ## Variables. ## ################################################################################################ $user = mysql_real_escape_string(htmlspecialchars($_POST['user'])); ## $pass = mysql_real_escape_string(htmlspecialchars(md5($_POST['pass']))); ## $query = ("SELECT password, groups FROM users WHERE user = '".$user."'"); ## $result = mysql_query($query) or die("Mysql Getting The Next Error:" . mysql_error()); ## ################################################################################################ if ($row = mysql_fetch_array($result)) { if($row['password'] == $pass && $_SESSION['security_code'] == $_POST['security_code_check'] && $row['groups'] == 1) { $_SESSION['user'] = $user; $_SESSION['pass'] = $pass; $_SESSION['groups'] = $_SESSION['groups'] + 1; header('Location: index.php?page=Administrators'); } if($row['password'] == $pass && $_SESSION['security_code'] == $_POST['security_code_check'] && $row['groups'] == 2) { $_SESSION['user'] = $user; $_SESSION['pass'] = $pass; $_SESSION['groups'] = $_SESSION['groups'] + 2; header('Location: index.php?page=Administrators_Deputys'); } if($row['password'] == $pass && $_SESSION['security_code'] == $_POST['security_code_check'] && $row['groups'] == 3) { $_SESSION['user'] = $user; $_SESSION['pass'] = $pass; $_SESSION['groups'] = $_SESSION['groups'] + 3; header('Location: index.php?page=Workers'); } mysql_close($db_connection); //Closing The Db Connection. } if(htmlspecialchars($_POST['user']) =='' || htmlspecialchars($_POST['pass'])=='' || htmlspecialchars($_POST['security_code_check'])=='') { echo 'אנא מלא את כל השדות'; } else { echo 'שם משתמש ואו סיסמא שגויים'; } }}?> תודה, יונתן. קישור לתוכן שתף באתרים אחרים More sharing options...
needacomp פורסם 2015 בינואר 5 Share פורסם 2015 בינואר 5 לא יודע לגבי יעול, אבל תקרא על SALT ועל למה לא להשתמש ב MD5, שניהם בהקשר של סיסמא. קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2015 בינואר 6 Share פורסם 2015 בינואר 6 עדיף גם להשתמש ב-prepared statements עם פרמטרים במקום לבנות את השאילתא דינמית עם ב-mysql_real_escape_string.http://php.net/manual/en/mysqli.prepare.phphttp://stackoverflow.com/questions/1290975/how-to-create-a-secure-mysql-prepared-statement-in-php קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.