За последние 24 часа нас посетили 17680 программистов и 1727 роботов. Сейчас ищут 964 программиста ...

Защита Админ панели

Тема в разделе "PHP для новичков", создана пользователем RomanCasper, 16 фев 2015.

  1. RomanCasper

    RomanCasper Новичок

    С нами с:
    17 дек 2014
    Сообщения:
    46
    Симпатии:
    1
    Привет программисты =)
    Настало время мне написать Админ-панель. Я пока сделал супер простую, помогите мне каким образом лучше защитить это место. Мне нужны ваши понятные советы, например:
    пароль должен храниться зашифрованным в БД,
    очищать сессию если прошло больше 24 часов с последнего входа и т.д.
    Пока выглядит так:
    Код (Text):
    1. <?php
    2. session_start();
    3. include ("bd.php");// подключаемся к базе данных
    4. if (!empty($_SESSION['admin_login']) and !empty($_SESSION['admin_password'])) { //если логин и пароль админа есть в сессиях проверяем на правильность
    5.     $admin_login = $_SESSION['admin_login'];
    6.     $admin_password = $_SESSION['admin_password'];
    7.     if (!($admin_login == 'gfcast_kjubyFlVbYf') AND !($admin_password == 'gfcast_f#[ss1e')) {
    8.         // данные не верны, выводим форму для входа админа
    9.     } else {
    10.         // данные верны, выводим админ панель
    11.     }  
    12. } else {
    13.     // выводим форму для входа админа
    14. }
    15. ?>
    Добавлено спустя 7 минут 37 секунд:
    После того как написал это сообщение, я наткнулся на это статью: http://webforever.info/программирование/основы_написания_админ-панели/ . Можно использовать такой метод, или с 2008 года многое поменялось?
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    По вашей текущей логике, если логин не 'gfcast_kjubyFlVbYf' и пароль не 'gfcast_f#[ss1e', то авторизация администратора пройдена.
    Администратор от обычного пользователя отличается только статусом и всё. Ну и возможно некоторыми вашими требованиями к сроку жизни сессии. Соответственно, авторизация полностью аналогична.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    в школе на уроках информатики поциент спал :)

    (!А И !Б) эквивалентно !(А ИЛИ Б), то есть достаточно чтобы сработало или имя или пароль. бинго!
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Пароль не нужно хранить в сессии, как и логин - достаточно идентификатора пользователя или просто признака, что авторизация прошла

    Статейка вроде ничего
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Чтобы не копировать чужой код, а понять как нужно действовать, советую изучить термины:

    Авторизация, Аутентификация и Идентификация.

    На русских страницах википедии они неплохо расписаны.

    Защита страницы (админки) от чтения кем попало это "авторизация".
    Код (PHP):
    1. if ($user != 'admin') { die('Fck off!'); } 
    Но для этого нам надо как-то "идентифицировать" пользователя. Например, мы можем хранить идентификатор в сессии (как вариант, есть и другие варианты).
    Код (PHP):
    1. $user = isset($_SESSION['user']) ? $_SESSION['user'] : ''; 
    А чтобы этот идентификатор появился, должна быть страничка входа, то есть "аутентификации".
    Код (PHP):
    1. $row = findUserByName($_POST['username']);
    2. if (!empty($row) && ($row['password'] == hash($_POST['password']))) {
    3.   $_SESSION['user'] = $_POST['username'];
    4. } 
    То есть проверка полномочий и проверка логина/пароля совсем необязательно происходят на одной странице!
    Аутентификация → Идентификация → Авторизация
     
  6. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    156
    Симпатии:
    4
    это шизофрения - хранить логин и пароль в базе данных

    я на своих "модерках" везде прямо в коде php пароль поставил - люди не то что "взломали"-они не видят на сайте страницу "модерки"

    можно подумать сайт спрашивающего парня будут взламывать по 5 раз на дню,типа там пупер портал с секретными данными

    придурки, делают сайт из 5 страниц- и начинают изобретать регистрации и авторизации ,да еще и через базы данных

    шизофрения

    Добавлено спустя 14 минут 17 секунд:
    http://liozenda.ru/home_video.php

    вот и вся админка,и не надо шизофрении с базами данных

    Код (Text):
    1.  
    2.   <form method=post action="">
    3.  <input type="text" name="name" class="button" size=12 maxlength=12 value='введите число'>&nbsp;&nbsp;&nbsp;<input type="submit" class="button" value="              Готово              ">
    4. </form>
    Код (Text):
    1. if($name=='2000024') { ?> если цифра верная то выводим текст\код <? } else echo 'угадай ка цифру:)';
    2.  
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Сегодня мы изучим новый способ сравнения значений: "!=" и "!==", которые, дословно, означают "не равно" с приведением типов или без него.
    Шизофрения - это когда стена,у тебя за спиной, шепчет на ухо, что кофемолка распускает о тебе сплетни.
    Допустим. Допустим ты в коде прописал даже не пароль в открытом виде, Я НАДЕЮСЬ, а сравнение его с хэшем от того, что ты отдал. Допустим. И вот тебе нужно выдать еще кому-то доступ в админку. Модератору, например. Или второму админу. Если работать с ролями, это вопрос всего пары кликов мышкой. Ты же предлагаешь ворочать исходный код.
    1) Хватит и одного взлома.
    2) Защита методом Неуловимого Джо хороша только до поры до времени.
    3) Да, там портал с секретными данными - с учетными данными других пользователей. Их тоже предлагаешь жестко в исходнике прописывать?
    1) Не надо называть придурками тех, чью мотивацию просто не понимаешь по какой-то причине.
    2) Твиттер сделан из 5 страничек, и что теперь?
    3) Как ты предлагаешь делать регистрацию, если не через БД? Через файлы?
    4) Почему такая ненавсить к БД?

    З.Ы. Так часто говоришь о шизофрении, что мой знакомый Фрейд начинает задумываться. Ну там...вшивый о бане, все дела.

    Добавлено спустя 1 минуту 38 секунд:
    эм... ты же в курсе, что даже 7-значное число - это всего лишь 10 миллионов значений? Думаешь, сложно перебрать? Лел.

    Добавлено спустя 2 минуты 39 секунд:
    Зашел на твой сайт. Бро, чесслово, не тебе учить других, что делать.