X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
> Как сделать авторизацию на сайте?
sc2r2bey
sc2r2bey
Topic Starter сообщение 10.8.2009, 19:59; Ответить: sc2r2bey
Сообщение #1


хочу сделать авторизацию, поможете? Мне нужно понять алгоритм, потом попробую, код сделать, потом вы меня подправите.
Каков алгоритм авторизации?


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 10.8.2009, 20:16; Ответить: НЕПЛОХОЙ
Сообщение #2


я вот по этой статье учился http://habrahabr.ru/blogs/php/13726/


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 10.8.2009, 20:27; Ответить: sc2r2bey
Сообщение #3


ты ее потом переработал?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 10.8.2009, 20:47; Ответить: ZiTosS
Сообщение #4


sc2r2bey, баян, на форуме уже обсуждалась. Если возникнут проблемы или вопросы, то спрашивай.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 10.8.2009, 21:03; Ответить: sc2r2bey
Сообщение #5


тогда критикните вот такой код

index.php

[php]<?php
//включаем сессию
session_start();
define( 'NET', 1 );
//подключаем БД
include '../include/configuration.php';
$_SESSION['id'] = session_id();
$url=$_SERVER['PHP_SELF'];
$filename = basename($url);
$_SESSION['link'] = "$filename";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional-dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href="../css/css.css" />

<title></title>
</head>
<body>

<div id="panel">
<!--форма авторизации-->
<form action="authorization.php" method="post">
<table border="0">

<tr>
<td>Имя пользователя(логин): </td>
<td><input type="text" name="login" value="<?php if($_SESSION['login'] == 0) echo $_SESSION['login']; ?>" size="25" /></td>
</tr>
<tr>
<td>Пароль: </td>
<td><input type="password" name="password" value="" size="25" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="войти" name="submit" /></td>
</tr>

</table>
</form>
</div>
</body>
</html>[/php]

autorization.php

[php]<?php
//включаем сессию
session_start();
define( 'NET', 1 );
$filename = $_SESSION['link'];
//подключаем БД
include '../include/configuration.php';

//Проверка переходa со страницы авторизации
if(isset($_POST['submit']))
{

//Сравниваем переданный идентификатор из формы с текущим идентификатором сессии
if($_SESSION['id'] != session_id())
{
exit("$error");
}

//Авторизация
$login = mysql_escape_string($_POST['login']);
$email_query = "SELECT password FROM user WHERE login='".$login."' AND id_user=1";
$name = mysql_query($email_query);
if(!$name)
{
echo mysql_error();
echo "Ошибка выполнения запроса!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}

if(mysql_num_rows($name) > 0)
{
$password = mysql_result($name, 0);
if (md5(md5(mysql_escape_string($_POST['password']))) == $password)
{
if(session_start())
{
$_SESSION['ok'] = 1;
$filename = $_SESSION['url'];
echo "<meta http-equiv='refresh' content='0; url=login.php'>";
echo "<a href='".$filename."'>Нажмите ссылку, если Ваш браузер не поддерживает автоматическую переадресацию!</a>";
}
}
else
{
echo "Неправильный пароль!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}
}

else
{
echo "Такой пользователь не зарегистрирован!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}
}
else
{
exit ("$error");
}
?>[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 10.8.2009, 21:08; Ответить: НЕПЛОХОЙ
Сообщение #6


ты ее потом переработал?

она рабочая прям в том виде как там написано =)
ток я совсем чуть чуть доработал код и вставил дополнительную защиту от брутфорса

тогда критикните вот такой код

ща критикну
1. А если пользователь закроет браузер ему снова придется вводить логин и пароль!?
2.
[php]md5(md5(mysql_escape_string($_POST['password'])[/php]
2.1 не обязательно для шифрованного пароля делать mysql_escape_string
2.2 говорят что md5(md5(pass)) сломать так же легко как md(pass). Лучше использовать что то вроде md5(pass).sha1(pass).sha1(salt) (ну или любой другой код, можно md5(sha1(pass).md5(salt)) и пр.)
salt - это любой набор символов, чем сложней тем лучше, для того чтоб обезопасить пользователей у которых простой пароль.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 10.8.2009, 21:34; Ответить: ZiTosS
Сообщение #7


sc2r2bey,
[php]define( 'NET', 1 );[/php]
Вообще ни о чём. Хотя возможно проверка в конфигурационном файле идёт. Защита от просмотра. Не вижу кода, сказать не могу...

[php]$url=$_SERVER['PHP_SELF'];[/php]
Нигде не используется в файле index.php

[php] //Сравниваем переданный идентификатор из формы с текущим идентификатором сессии
if($_SESSION['id'] != session_id())
{
exit("$error");
}[/php]
Бесполезная защита. ID сессии хранится в куках или GET строке. Оттуда и происходит восстановление соединения при каждом переходе меж страниц. Если кто-то заберёт id из кук, то подобная проверка бесполезна.

[php] //Авторизация
$login = mysql_escape_string($_POST['login']);
$email_query = "SELECT password FROM user WHERE login='".$login."' AND id_user=1";
$name = mysql_query($email_query);
if(!$name)
{
echo mysql_error();
echo "Ошибка выполнения запроса!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}

if(mysql_num_rows($name) > 0)
{
$password = mysql_result($name, 0);
if (md5(md5(mysql_escape_string($_POST['password']))) == $password)
{
if(session_start())
{
$_SESSION['ok'] = 1;
$filename = $_SESSION['url'];
echo "<meta http-equiv='refresh' content='0; url=login.php'>";
echo "<a href='".$filename."'>Нажмите ссылку, если Ваш браузер не поддерживает автоматическую переадресацию!</a>";
}
}
else
{
echo "Неправильный пароль!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}
}

else
{
echo "Такой пользователь не зарегистрирован!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}[/php]
Этот кусок кода можно было сократить в пару раз так:
[php] //Авторизация
$login = mysql_escape_string($_POST['login']);
$pass = md5(md5($_POST['password']));
$query = "SELECT login, password FROM user WHERE login='{$login}' AND password='{$pass}' AND id_user=1";
$res = mysql_query($query);
if(!$res) {
echo mysql_error();
echo "Ошибка выполнения запроса!<br />";
echo "<meta http-equiv='refresh' content='1; url={$filename}'>";
echo "<a href='{$filename}'>Попробуйте еще!</a>";
exit();
}

if(mysql_num_rows($res) == 1)
{
$array = mysql_fetch_array($res);
$_SESSION['ok'] = 1;
unset($_SESSION['link']);
$filename = $_SESSION['url'];
echo "<meta http-equiv='refresh' content='0; url=login.php'>";
echo "<a href='{$filename}'>Нажмите ссылку, если Ваш браузер не поддерживает автоматическую переадресацию!</a>";
} else {
echo "Такой пользователь не зарегистрирован!<br />";
echo "<meta http-equiv='refresh' content='1; url=".$filename."'>";
echo "<a href='".$filename."'>Попробуйте еще!</a>";
exit();
}[/php]


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 10.8.2009, 21:41; Ответить: sc2r2bey
Сообщение #8


ценные замечание попробую доработать!


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 13.8.2009, 0:00; Ответить: sc2r2bey
Сообщение #9


Сообщения не содержащие смысловой нагрузки по данному вопросы, перенесены в отдельную тему [Как лучше шифровать пароли?]


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 29.1.2010, 3:10; Ответить: sc2r2bey
Сообщение #10


ZiTosS, а насколько сей код безопасен
и что еще можно сюда добавить?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
5 страниц V   1 2 3 4 5 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
12 Boymaster 1920 Вчера, 21:03
автор: MisterBit
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБыстрый и качественный обмен на сайте Baksman.org
Обмен Bitcoin, BTC-e, PM, Qiwi, Yandex money, Карты банк
52 Baksman 33588 18.4.2024, 5:02
автор: Baksman
Открытая тема (нет новых ответов) Боты могут делать пушподписки на моём сайте?
0 Megaspryt 472 17.4.2024, 23:29
автор: Megaspryt
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
29 freeax 4813 17.4.2024, 1:19
автор: sergio11
Горячая тема (нет новых ответов) CryptoCloud — прием USDT, BTC, ETH, LTC на любом сайте
36 CryptoCLoud 10639 16.4.2024, 16:02
автор: CryptoCLoud


 



RSS Текстовая версия Сейчас: 20.4.2024, 3:23
Дизайн