Witam!
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.7zplik:
logowanie.php<?php
include ("baza.php");
$akcja = $_REQUEST['akcja'];
switch($akcja) {
// --------------------------------default------------------------------------
default:
if (isset($_SESSION['prawa']) and
isset($_SESSION['login']) and
isset($_SESSION['password'])){
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"){
if (isset($_SESSION['login']) and
isset($_SESSION['password']) and
isset($_SESSION['losowy_kod'])){
$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");
echo "panel administratora"; }
if ($prawa==2){
// header("Location: logowanie.php?akcja=panel_u");
echo "panel uzytkownika"; }
}else{
header("Location: index.php"); }
}else{
header("Location: index.php"); }
}else{
// cosik();
header("Location: index.php"); }
}else{
header("Location: index.php"); }
break;
// --------------------------------LOGOWANIE------------------------------------
case "logowanie":
//session_start();
include_once('baza.php');
if ( $_POST['login'] && $_POST['password'] ){
$wyk = mysql_query('SELECT * FROM '.$prefiks.'admins WHERE email=\''.$login.'\''); 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['password'] = md5($_POST['password']); $_SESSION['prawa']= $prawa;
$_SESSION['losowy_kod']='k3Dc6a^s';
$ost_log_tmp=date("Y-m-d G:i:s",time()); $_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");
echo "panel administratora"; }
if ($prawa==2){
// header("Location: logowanie.php?akcja=panel_u");
echo "panel uzytkownika"; }
}else{
echo"nie posiada odpowiednich uprawnien"; }
}else{
echo"uzytkownik został zablokwany"; }
}else{
echo"Nie prawidłowy login lub hasło"; }
}else{
echo"Uzytkownik nie istnieje"; }
}else{
echo"Uzupelnij pola formularza"; }
break;
// -------------------------ŁADOWANIE PANELU ADMINISTRATORA----------------------
case "panel_a":
if (isset($_SESSION['login']) and
isset($_SESSION['password']) and
isset($_SESSION['losowy_kod'])){
$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){
echo "panel administratora"; }
}else{
header("Location: index.php"); }
}else{
header("Location: index.php"); }
// cosik();
header("Location: index.php"); }
break;
}?>
plik:
baza.php<?
$host = "localhost";
$user = "root";
$pass = "";
$base = "test";
$prefiks="sb_";
$link_mysql=mysql_connect($host, $user, $pass) or
die('Nie można nawišzać połšczenia z MySQL-em');
?>
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);