Вот скрипт:
<?php
include ("blocks/connect_bd.php");
if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
else {
if (!get_magic_quotes_gpc()) {
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$query = "SELECT password FROM passwords WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
if (!$lst)
{
Header ("WWW-Authenticate: Basic realm=\"Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
if (mysql_num_rows($lst) == 0)
{
Header ("WWW-Authenticate: Basic realm=\"Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
$pass = @mysql_fetch_array($lst);
if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
{
Header ("WWW-Authenticate: Basic realm=\"Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>
На данный момент он сравнивает введенный пароль с записью в базе.
Как сделать, чтобы он сравнивал md5(введенный пароль) с тем, что в базе?
Спустя 3 минуты, 48 секунд (21.04.2010 - 14:17) DedMorozzz написал(а):
Ну например так:
И естесно в базу открытый пароль не должен храниться.
"SELECT `user_name` FROM `table` WHERE `login`='$login' AND `pass`='".md5($pass)."'
И естесно в базу открытый пароль не должен храниться.
Спустя 33 минуты, 52 секунды (21.04.2010 - 14:51) twin написал(а):
Спустя 2 часа, 3 секунды (21.04.2010 - 16:51) userguest написал(а):
Спасибо за терпение к глупым вопросам.
Спасибо за ссылки.
twin, посмотрел Ваш короткий вариант авторизации и буду использовать.
Но возник еще один вопрос.
Можно ли противопоставить по надежности "хэширование" пароля и Вашу авторизацию. Т.е. пароль защищает, к примеру, администраторскую зону сайта, а между этой зоной и паролем есть скрипт авторизации. Пароль по хэшу восстановить сложно, а сложно ли "обойти" скрипт авторизации? Иначе говоря, среднестатистический программист, которому нечего делать, но которому не сильно нужно, сможет без труда обойти защиту?
Спасибо за ссылки.
twin, посмотрел Ваш короткий вариант авторизации и буду использовать.
Но возник еще один вопрос.
Можно ли противопоставить по надежности "хэширование" пароля и Вашу авторизацию. Т.е. пароль защищает, к примеру, администраторскую зону сайта, а между этой зоной и паролем есть скрипт авторизации. Пароль по хэшу восстановить сложно, а сложно ли "обойти" скрипт авторизации? Иначе говоря, среднестатистический программист, которому нечего делать, но которому не сильно нужно, сможет без труда обойти защиту?
Спустя 2 минуты, 26 секунд (21.04.2010 - 16:53) userguest написал(а):
Еще перефразирую. Равны ли хоть чуть-чуть действия по подбору пароля действиям, которые нужно предпринять, чтобы "обойти" скрипт авторизации? Критерий: время.
Спустя 1 минута, 54 секунды (21.04.2010 - 16:55) DedMorozzz написал(а):
userguest
ещё раз: пароль НИКОГДА в открытом виде не храни. И по хешу невозможно востановить пароль, функция не обратима. А обычный мд5 "ломаеться" уже легко. Для этого почитай что такое соль. И в БД храни пароли в поле формата "Tiny blob". И таковая защита будет, что узник замка Уф обзавидуеться
ещё раз: пароль НИКОГДА в открытом виде не храни. И по хешу невозможно востановить пароль, функция не обратима. А обычный мд5 "ломаеться" уже легко. Для этого почитай что такое соль. И в БД храни пароли в поле формата "Tiny blob". И таковая защита будет, что узник замка Уф обзавидуеться
Спустя 1 час, 32 минуты, 24 секунды (21.04.2010 - 18:28) twin написал(а):
Цитата |
Еще перефразирую. Равны ли хоть чуть-чуть действия по подбору пароля действиям, которые нужно предпринять, чтобы "обойти" скрипт авторизации? Критерий: время. |
Любой замок - устройство, которое в первую очередь должно открываться, а не запирать. Потому что можно и кирпичами золожить. Так вот как и чем он открывается - говорит о его надежности. Если можно открыть шилом, как Поповский скрипт - все плохо. Если для взлома потребуется лазерная пушка, алмазные сверла и так далее - вопрос другой.
Теоретически открыть можно любую защиту, на то это и замок.
Дело тут в рентабельности. И коль скоро эта аутентификация называется "базовой", используется на огромном количестве серьёзных ресурсов, то значит ломать её не так уж и дешево.
Или там у тебя на сайте брилианты зарыты?
Спустя 7 дней, 22 часа, 10 минут, 46 секунд (29.04.2010 - 16:39) userguest написал(а):
Twin, использовал ваш скрипт авторизации.
Можно ли осуществить "выход" при его использовании, т.е. чтобы после нажатия кнопки "выход" снова запрашивался логин и пароль?
Можно ли осуществить "выход" при его использовании, т.е. чтобы после нажатия кнопки "выход" снова запрашивался логин и пароль?
Спустя 2 часа, 19 минут, 8 секунд (29.04.2010 - 18:58) twin написал(а):
Напрямую нет. Это один из недостатков базовой аутентификации. Вход будет открыт, пока открыт браузер.
Можно помудрить с сессиями, но если нужна кнопка "выход", то лучше не сделать свою систему.
Можно помудрить с сессиями, но если нужна кнопка "выход", то лучше не сделать свою систему.
Спустя 16 минут, 14 секунд (29.04.2010 - 19:14) userguest написал(а):
В своей системе аутентификации я пока вижу только два плюса, которые более или менее оправдывают ее создание:
1) можно красиво оформить, в т.ч. и с помощью jquery, окно для ввода пароля и логина.
2) от вас узнал - что самописная система аутентификации позволит осуществить функцию выхода с защищенной паролем страницы сайта.
Есть еще какие-нибудь интересные особенности?
1) можно красиво оформить, в т.ч. и с помощью jquery, окно для ввода пароля и логина.
2) от вас узнал - что самописная система аутентификации позволит осуществить функцию выхода с защищенной паролем страницы сайта.
Есть еще какие-нибудь интересные особенности?
Спустя 45 минут, 18 секунд (29.04.2010 - 19:59) twin написал(а):
Базовая аутентификация, это очень простая и достаточно надежная вещь. Но при этом имеет кучу неудобств. Обчычно применяется для защиты одного - нескольких файлов и исключительно для служебного пользования.
Для клиентской стороны конечно не стоит её применять. Это к вопросу о красоте окон.
Для клиентской стороны конечно не стоит её применять. Это к вопросу о красоте окон.
Спустя 12 часов, 50 минут, 22 секунды (30.04.2010 - 08:50) Guest написал(а):
twin
Посмотрите я нашел в мануале выход через сессию. Скажите пожалуйста, код нормально защ?
Посмотрите я нашел в мануале выход через сессию. Скажите пожалуйста, код нормально защ?
session_start();
if (isset($_GET['mod']) AND $_GET['mod'] == "logout")
{
unset($_SESSION["login"]);
Header ("WWW-Authenticate: Basic realm=\"Administrative resource\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
if (empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW']) || !isset($_SESSION["login"]))
{
Header("WWW-Authenticate: Basic realm=\"Administrative resource\"");
Header("HTTP/1.0 401 Unauthorised");
$_SESSION["login"] = true;
exit();
}
$result = mysql_query("SELECT COUNT(*) AS `cnt` FROM `users`
WHERE `name` = '".mysql_real_escape_string($_SERVER['PHP_AUTH_USER'])."'
AND `pass` = '".md5($_SERVER['PHP_AUTH_PW'])."'"
);
if (mysql_result($result, 0) == 0)
{
unset($_SESSION["login"]);
Header ("WWW-Authenticate: Basic realm=\"Administrative resource\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
Спустя 56 минут, 41 секунда (30.04.2010 - 09:46) twin написал(а):
Вполне разумно.
Спустя 6 месяцев, 5 дней, 4 часа, 53 минуты, 49 секунд (5.11.2010 - 15:40) vexel написал(а):
спасибо всем огромное
Спустя 9 минут, 2 секунды (5.11.2010 - 15:49) DedMorozzz написал(а):
Если существует Гет параметр "мод" и он равен "лагаут", тогда - .....
Спустя 19 минут, 2 секунды (5.11.2010 - 16:08) vexel написал(а):
Подскажите пожалуйста
если заменить
на
не повредит это безопасноти?
если заменить
<?php
if (isset($_GET['mod']) AND $_GET['mod'] == "logout")
{
unset($_SESSION["login"]);
Header ("WWW-Authenticate: Basic realm=\"Administrative resource\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
?>
на
<?php
if (isset($_GET['mod']) AND $_GET['mod'] == "logout")
{
unset($_SESSION["login"]);
Header ("location:mysite.com")
exit();
}
?>
не повредит это безопасноти?
Спустя 24 дня, 5 часов, 29 минут, 48 секунд (29.11.2010 - 21:38) Гость_Дмитрий написал(а):
А что может быть если используя Вашу бэйсик аутентификацию на локальном сервере работает..на одном хостиге работает..А на другом хостинге при вводе пары логин/пароль заново просит ввести данные..И заходить не заходит((Может от типа серверов..Линукс или Виндоус