Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Оцените мой скрипт безопасности админки
 
 автор: Blaster   (20.06.2008 в 23:45)   письмо автору
 
 

Вот написал скрипт для защиты информации от посторонних лиц)
index.php

<?php
session_start
();
function 
secure()
{
    
$crypted_password "202cb962ac59075b964b07152d234b70";//зашифрованый пароль - 123
    
$ip=$_SERVER['REMOTE_ADDR'];//IP-адрес юзера
    
$key=$ip.$crypted_password;//Идентификатор сессии, который хранится в кукисах. Получается совмещением айпи и зашифрованного пароля.
    
$key=md5($key);//Шифруем его на всякий случай
    
if (isset($_COOKIE['ckey']) && $_COOKIE['ckey']!="")
    {
        
$ckey=$_COOKIE['ckey'];
    }
    if(!isset(
$ckey) || !isset($_SESSION[$ckey]))
    {
        if(isset(
$_POST['password']) && $_POST['password']!="")
        {
            
$password=$_POST['password'];
            if(
md5($password)===$crypted_password//Регистрация сессии
            
{
                
setcookie("ckey"$key);
                
$_SESSION[$key]=$key;
                
header("Location: index.php"); 
            }
            else
            {
                echo 
"<h1>Неверный пароль!</h1>";
            }
        }
        else if(!isset(
$ckey) || !isset($_SESSION[$ckey]))
        {
            echo 
"<form name='login' action='index.php' method='post'>
            <input type='password' name='password'><br /><input type='submit' value='Вход'> 
            </form>"
;
        }
    }

    if(isset(
$ckey) && isset($_SESSION[$ckey]) && $_SESSION[$ckey]==$ckey//Вход выполнен!
    
{
        return 
1;
    }
}


if(
secure())
{
    echo 
"Секретная инфа";
}

Работает он так: при входе введеный зашифрованный пароль сравнивается с хешем, хранящимся в скрипте.
Если они совпадают, скрипт создает кукис, хранящий некий ключ. Одновременно создается переменная сессии с именем, равным тоже этому ключу.
Защищенная часть выводится, если скрипт находит кукис, читает из него значение, потом ищет переменную сеанса с идентификатором, равным этому значению, и, если находит, выводится секретная информация.

Не знаю, понятно ли я объясняю, но, кому не лень, взгляните на код, плиз. И скажите, надежна ли защита?

   
 
 автор: Valick   (20.06.2008 в 23:54)   письмо автору
 
   для: Blaster   (20.06.2008 в 23:45)
 

Одновременно создается переменная сессии с именем, равным тоже этому ключу.

Я бы этого не делал

   
 
 автор: Blaster   (21.06.2008 в 00:23)   письмо автору
 
   для: Valick   (20.06.2008 в 23:54)
 

а как по-вашему правильно?

   
 
 автор: Blaster   (01.07.2008 в 11:14)   письмо автору
 
   для: Valick   (20.06.2008 в 23:54)
 

вопрос еще открыт...

   
 
 автор: mihdan   (01.07.2008 в 11:50)   письмо автору
 
   для: Blaster   (01.07.2008 в 11:14)
 

Дежавю - на прошлой недели вроде тож самое было и вопрос и ответ )))

   
 
 автор: Valick   (01.07.2008 в 12:13)   письмо автору
 
   для: Blaster   (01.07.2008 в 11:14)
 

украсть куку легче чем своровать сессию. Храня идентификатор в куках, вы облегчаете жизнь взломщику.

   
 
 автор: Blaster   (02.07.2008 в 23:31)   письмо автору
 
   для: Valick   (01.07.2008 в 12:13)
 

А если тогда наоборот, в сесии хранить идентификатор куки?
или это вообще бред?:)

   
 
 автор: Blaster   (19.08.2008 в 22:28)   письмо автору
 
   для: Blaster   (02.07.2008 в 23:31)
 

Ну народ! Я все еще жду ответа...

   
 
 автор: Trianon   (19.08.2008 в 23:51)   письмо автору
 
   для: Blaster   (19.08.2008 в 22:28)
 

Вы бы пояснили подробнее, какие уязвимости Вы планируете этим скриптом закрыть.
Иначе не ясно, что именно оценивать.

   
 
 автор: Blaster   (20.08.2008 в 17:47)   письмо автору
 
   для: Trianon   (19.08.2008 в 23:51)
 

хочется сделать максимально безопасную админскую часть.
Можете описать как примерно должна работать защита?
Хотя бы кратенько вашу точку зрения...

   
 
 автор: vbps   (20.08.2008 в 03:40)   письмо автору
 
   для: Blaster   (20.06.2008 в 23:45)
 

А сессий не достаточно? Куки зачем?
Лишний код пораждает лишнии ошибки!

   
 
 автор: mihdan   (21.08.2008 в 11:38)   письмо автору
 
   для: Blaster   (20.06.2008 в 23:45)
 

Куки то вам зачем? Сессий достаточно вполне, да и гемора вам меньше.

ЗЫ: прочтите книгу Незамутдинова

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования