Перейти к содержимому

Сервис обмена электронных валют


Нужен код защиты админки.

#1 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8
0

Отправлено 22 Апрель 2010 - 20:56

Народ помогите найти простенький код защиты админки желательно работающий без БД (У меня с ней проблемы).

 

 

  • 0
Вникаю в тему создания сайтов...


#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 21:37

phpuser, Всё тоже самое, что ты и делал, но вместо проверки данных с БД, сверяй прям в скрипте определенные значения(фиксированные) с веденными. Самый простой вариант.
  • 0

#3 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 22:11

А проверку пользователя на то что ввёл он уже пароль или нет организовывать на сессиях да?


  • 0
Вникаю в тему создания сайтов...


#4 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 22 Апрель 2010 - 22:25

Лучше да.
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 22:35

phpuser, конечно на сессиях, не куки же юзать.
  • 0

#6 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 00:57

Выкладываю код моей самой простейшей защиты админки без использования БД. Советуем и улучшаем :rolleyes:

<?php
if (isset($_POST['pass'])) {$pass = $_POST['pass'];}
if (isset($_POST['user'])) {$user = $_POST['user'];}

$hash_pass = md5($pass);
$hash_user = md5($user);

$lock_pass = "09c33dbae155019000672fbf4ed7702f";
$lock_user = "5435cfddc7e1cd3c1d703f230e2113ba";


if ($lock_pass == $hash_pass and $lock_user == $hash_user)
{
session_start();
header("Location: welcome.php");
}
else
{
header("Location: index.php?bad=1");
}
?>

  • 0
Вникаю в тему создания сайтов...


#7 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 09:47

if ($lock_pass == $hash_pass and $lock_user == $hash_user)
{
session_start();
header("Location: welcome.php");
$_SESSION['logged'] = 1; // Чтобы потом из страниц проверять, если сужествует данная переменная, значит авторизован. Если нет, то значит нет.
}
else
{
header("Location: index.php?bad=1");
}

  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 11:23

phpuser, немного неверно. А если я обращусь к твоей странице не из формы, а напрямую? Полей user и pass не будет. Догадайся, что мы получим...
Я бы лучше написал так:
<?php

session_start(); // запускать сессии лучше вначале, они никому и ничего не дают, кроме кук или ID-сессии в GET-строке

$user = isset($_POST['user']) ? $_POST['user'] : ""; // если передан логин, то используем его, если он не передан, то пустая строка
$pass = isset($_POST['pass']) ? $_POST['pass'] : ""; // если передан пароль, то используем его, если он не передан, то пустая строка

$user = md5($user); // хеш строки юзера
$pass = md5($pass); // хеш строки пароля

$lock_user = "5435cfddc7e1cd3c1d703f230e2113ba";
$lock_pass = "09c33dbae155019000672fbf4ed7702f";

if ( $lock_pass != $pass || $lock_user != $user )
{
header("location: index.php?bad=1");
exit(); // не забываем завершать исполнение, а то потом получим мифические результаты
}
else
$_SESSION['logged'] = 1;

header("Location: welcome.php");
exit();

?>

Не забываем затем в файле welcome.php, проверять на существование переменную $_SESSION['logged']. А то будет дырка.
  • 0

#9 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 15:17

phpuser, немного неверно. А если я обращусь к твоей странице не из формы, а напрямую? Полей user и pass не будет. Догадайся, что мы получим...

К какой странице ты обращаешься напрямую к welcome?

Не забываем затем в файле welcome.php, проверять на существование переменную $_SESSION['logged']. А то будет дырка.


У меня в файле welcome.php вот такая проверочка была:

<?php
session_start( );
if ($_SESSION['user'] == null || $_SESSION['user'] < 1)
{
header("Location: index.php");
exit;
}
?>

  • 0
Вникаю в тему создания сайтов...


#10 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 15:48

У меня в файле welcome.php вот такая проверочка была:

<?php
session_start( );
if ($_SESSION['user'] == null || $_SESSION['user'] < 1)
{
header("Location: index.php");
exit;
}
?>

Так ты нигде вообще не задал переменную $_SESSION['user']. =)
Как это значение может быть истиной?

А я кстати не вижу дырки по прямому доступу к файлу. Если нет значений $_POST, то они в любом случае не проходят проверку и отправляются опять в index.php.

$user = isset($_POST['user']) ? $_POST['user'] : ""; // если передан логин, то используем его, если он не передан, то пустая строка
$pass = isset($_POST['pass']) ? $_POST['pass'] : ""; // если передан пароль, то используем его, если он не передан, то пустая строка

И в этой части смысла не вижу. =) Это же как-то по индийски получается. =)

Если POST не пустой, то он равен POST, если пустой, то он пустой! :rolleyes:
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru