Mam pro¶bę o sprawdzenie bezpieczeństwa skryptu logowania z różnymi uprawnieniami, wszelkie uwagi sugestie mile widziane. Dodatkowo prosiłbym o jaki¶ pomysł na zabezpieczenie pliku baza.php
Login w przykładzie asd@asd.pl hasło admin.
Pliki do pobrania z http://vlaho.pl/test.7z
plik: logowanie.php
<?php include ("baza.php"); $akcja = $_REQUEST['akcja']; switch($akcja) { // --------------------------------default------------------------------------ default: echo "<br /><center>Jestes zalogowany jako: <br /> <a href=logowanie.php?akcja=przerzut target='_parent'>".$_SESSION['login']."</a><br /><a href=logowanie.php?akcja=przerzut&login=logout target='_parent'>Wyloguj</a></center>"; }else{ echo'<form action="logowanie.php?akcja=logowanie" target="_parent" method="post"> <table width="25%" border="0" align="center"> <tr> <td><div class="text2">Login:</div></td> <td><input type="text" name="login" size="15" /></td> </tr> <tr> <td><div class="text2">Haslo:</div></td> <td><input type="password" name="password" size="15"/></td> </tr> <tr> <td></td> <td><input type="submit" name="submit" value="Zaloguj" /></td> </tr> </table> </form>'; } break; //---------------------SPRAWDZENIE JAKIE MASZ PRAWA---------------------------- case "przerzut": if($_GET['login']<>"logout"){ $login=$_SESSION['login']; $pass=$_SESSION['password']; $wyk = mysql_query('SELECT login, password, prawa, stan FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.$pass.'\''); if ($ile>0){ $prawa=$w['prawa']; $stan=$w['stan']; if ($stan==0){ if ($prawa==1){ //header("Location: logowanie.php?akcja=panel_a"); } if ($prawa==2){ // header("Location: logowanie.php?akcja=panel_u"); } }else{ } }else{ } }else{ // cosik(); } }else{ } break; // --------------------------------LOGOWANIE------------------------------------ case "logowanie": //session_start(); include_once('baza.php'); if ( $_POST['login'] && $_POST['password'] ){ if ($ile>0){ $wyk = mysql_query('SELECT * FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.md5($pass).'\''); if ($ile>0){ $prawa=$w['prawa']; $stan=$w['stan']; $ost_log=$w['ost_log_tmp']; $id_uzyt=$w['id']; if ($stan==0){ $_SESSION['login'] = $_POST['login']; $_SESSION['prawa']= $prawa; $_SESSION['losowy_kod']='k3Dc6a^s'; $_SESSION['ost_log']=$ost_log; mysql_query("UPDATE ".$prefiks."admins SET ost_log = '$ost_log', ost_log_tmp='$ost_log_tmp' WHERE id ='$id_uzyt';"); if($prawa==1 or $prawa==2){ if ($prawa==1){ // header("Location: logowanie.php?akcja=panel_a"); } if ($prawa==2){ // header("Location: logowanie.php?akcja=panel_u"); } }else{ } }else{ } }else{ } }else{ } }else{ } break; // -------------------------ŁADOWANIE PANELU ADMINISTRATORA---------------------- case "panel_a": $login=$_SESSION['login']; $pass=$_SESSION['password']; $wyk = mysql_query('SELECT login, password, prawa, stan FROM '.$prefiks.'admins WHERE email=\''.$login.'\' AND password=\''.$pass.'\''); if ($ile>0){ $prawa=$w['prawa']; $stan=$w['stan']; if ($stan==0){ if ($prawa==1){ } }else{ } }else{ } // cosik(); } break; }?>
plik: baza.php
<? $host = "localhost"; $user = "root"; $pass = ""; $base = "test"; $prefiks="sb_"; ?>
CREATE TABLE IF NOT EXISTS `sb_admins` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `login` varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL DEFAULT '', `imie` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `nazwisko` varchar(20) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `kod` varchar(6) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL DEFAULT '', `prawa` int(1) NOT NULL DEFAULT '0', `urodz` date NOT NULL, `stan` int(1) NOT NULL, `ost_log` datetime NOT NULL, `ost_log_tmp` datetime NOT NULL, `reg` int(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=49 ; INSERT INTO `sb_admins` (`id`, `date`, `login`, `password`, `imie`, `nazwisko`, `kod`, `email`, `prawa`, `urodz`, `stan`, `ost_log`, `ost_log_tmp`, `reg`) VALUES (1, '2006-11-20 00:18:36', 'asd@asd.pl', '21232f297a57a5a743894a0e4a801fc3', 'Jan', 'Kowalski', '', 'asd@asd.pl', 2, '1980-01-01', 0, '2012-02-28 18:18:25', '2012-02-28 19:11:03', 0);