|
|
|
| Вот написал скрипт для защиты информации от посторонних лиц)
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 "Секретная инфа";
}
|
Работает он так: при входе введеный зашифрованный пароль сравнивается с хешем, хранящимся в скрипте.
Если они совпадают, скрипт создает кукис, хранящий некий ключ. Одновременно создается переменная сессии с именем, равным тоже этому ключу.
Защищенная часть выводится, если скрипт находит кукис, читает из него значение, потом ищет переменную сеанса с идентификатором, равным этому значению, и, если находит, выводится секретная информация.
Не знаю, понятно ли я объясняю, но, кому не лень, взгляните на код, плиз. И скажите, надежна ли защита? | |
|
|
|
|
|
|
|
для: Blaster
(20.06.2008 в 23:45)
| | Одновременно создается переменная сессии с именем, равным тоже этому ключу.
Я бы этого не делал | |
|
|
|
|
|
|
|
для: Valick
(20.06.2008 в 23:54)
| | а как по-вашему правильно? | |
|
|
|
|
|
|
|
для: Valick
(20.06.2008 в 23:54)
| | вопрос еще открыт... | |
|
|
|
|
|
|
|
для: Blaster
(01.07.2008 в 11:14)
| | Дежавю - на прошлой недели вроде тож самое было и вопрос и ответ ))) | |
|
|
|
|
|
|
|
для: Blaster
(01.07.2008 в 11:14)
| | украсть куку легче чем своровать сессию. Храня идентификатор в куках, вы облегчаете жизнь взломщику. | |
|
|
|
|
|
|
|
для: Valick
(01.07.2008 в 12:13)
| | А если тогда наоборот, в сесии хранить идентификатор куки?
или это вообще бред?:) | |
|
|
|
|
|
|
|
для: Blaster
(02.07.2008 в 23:31)
| | Ну народ! Я все еще жду ответа... | |
|
|
|
|
|
|
|
для: Blaster
(19.08.2008 в 22:28)
| | Вы бы пояснили подробнее, какие уязвимости Вы планируете этим скриптом закрыть.
Иначе не ясно, что именно оценивать. | |
|
|
|
|
|
|
|
для: Trianon
(19.08.2008 в 23:51)
| | хочется сделать максимально безопасную админскую часть.
Можете описать как примерно должна работать защита?
Хотя бы кратенько вашу точку зрения... | |
|
|
|
|
|
|
|
для: Blaster
(20.06.2008 в 23:45)
| | А сессий не достаточно? Куки зачем?
Лишний код пораждает лишнии ошибки! | |
|
|
|
|
|
|
|
для: Blaster
(20.06.2008 в 23:45)
| | Куки то вам зачем? Сессий достаточно вполне, да и гемора вам меньше.
ЗЫ: прочтите книгу Незамутдинова | |
|
|
|