|
|
|
| Безопасный ли мой способ авторизации в плане безопасности?
В самой обработчике авторизации через форму генерируется хеш из 15 символов и если человек выбрал пункт "привязка к IP" то в базу записывается его IP, который потом проверяется.
<? // проверка кук
if (!isset($_SESSION['id']))
{
if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
$nick1 = mysql_query("SELECT * FROM users WHERE id = '".intval($_COOKIE['id'])."' LIMIT 1",$db);
$nick = mysql_fetch_array($nick1);
if($nick['id'] === $_COOKIE['id'] and $nick['hash'] === $_COOKIE['hash'])
{
if ($nick['ip'] != "") // если человек выбрал "привязка к IP" и в базу был записан IP авторизованного
{
if ($nick['ip'] == ip()) // если айпи в базе равен авйпи, под которым человек пытается зайти
$_SESSION['id'] = $nick['id'];
}
else
$_SESSION['id'] = $nick['id'];
}
else
{
setcookie("id", "", time() - 3600*24*30, "/", "offcook.com");
setcookie("hash", "", time() - 3600*24*30, "/", "offcook.com");
}
}
}
|
| |
|
|
|
|
|
|
|
для: lElectroHardl
(26.09.2010 в 22:03)
| | А если у человека динамический IP? И зачем вам это нужно? | |
|
|
|
|
|
|
|
для: Gubichev
(26.09.2010 в 22:13)
| | Так человеку дан выбор.
<label><input type='checkbox' name='attach_ip' checked=\"checked\"> Привязка по IP</label>
|
"Зачем?"
Глупый вопрос.
В плане безопасности как? | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.09.2010 в 22:20)
| | А сколько предположительно посетителей вашего сайта про пищу, знают, что такое привязка к IP? Один процент? | |
|
|
|
|
|
|
|
для: Gubichev
(26.09.2010 в 22:27)
| | В теге title="написано что это".
PS: "ух ты, меня узнают". | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.09.2010 в 22:28)
| | Хорошо, человек прочитал и теперь 10% в теме, что такое привязка. А сколько человек сидящих на сайтах про пищу знают какой у них IP, стат. или дин.? Моё мнение - этим будут пользоваться единицы.
Узнают? Вы о чём? | |
|
|
|
|
|
|
|
для: Gubichev
(26.09.2010 в 22:34)
| | Блин... Я ж говорю, что это будет по-выбору. Знаешь, что такое IP и для чего оно выберешь "привязка к АйПи", не знаешь, не выберешь. | |
|
|
|
|
|
|
|
для: lElectroHardl
(26.09.2010 в 22:03)
| | > $nick1 = mysql_query("SELECT * FROM users WHERE id = '".intval($_COOKIE['id'])."' LIMIT 1",$db);
$nick = mysql_fetch_array($nick1);
if($nick['id'] === $_COOKIE['id'] and $nick['hash'] === $_COOKIE['hash'])
А если запрос ничего не вернёт потомучто нет такого id в таблице ?
У вас включены E_NOTICE ?
и зачем снова проверяется
if($nick['id'] === $_COOKIE['id'] and $nick['hash'] === $_COOKIE['hash'])
здесь ошибся
// Вас узнали по setcookie("id", "", time() - 3600*24*30, "/", "offcook.com"); :) | |
|
|
|
|
|
|
|
для: heed
(27.09.2010 в 18:15)
| | Если я правильно понял, то в начало (после проверки кук) нужно вставить
if (mysql_result($nick1, 0) > 0)
|
И что это:
>>// Вас узнали по setcookie("id", "", time() - 3600*24*30, "/", "offcook.com"); :)
? | |
|
|
|
|
|
|
|
для: lElectroHardl
(27.09.2010 в 19:13)
| | а чо не if(mysql_result($nick1, 0) > 0.0000035 ) ? | |
|
|
|
|
|
|
|
для: Trianon
(27.09.2010 в 19:18)
| | И?
По крайней мере в мануале (вернее на Хабре) написано так | |
|
|
|
|
|
|
|
для: lElectroHardl
(27.09.2010 в 19:21)
| | >И?
чо и? тоже ж заработает.
>По крайней мере в мануале (вернее на Хабре) написано так
на хабре вернее, чем в мануале? | |
|
|
|
|
|
|
|
для: Trianon
(27.09.2010 в 19:33)
| | Хорошо, как надо? Потому что я не пойму, что не так? | |
|
|
|
|
|
|
|
для: lElectroHardl
(27.09.2010 в 19:13)
| | >PS: "ух ты, меня узнают".
>И что это:
Это версия :)
mysql_result выдаст ошибку , если запрос вернул 0 рядов.
if($nick['id'] === $_COOKIE['id'] and $nick['hash'] === $_COOKIE['hash'])
тоже выдаст предупреждение уровня notice если 0 рядов
echo ($abrakadabra['a'] === $_COOKIE['abrakadabra']); выводит вот что
<br />
<b>Notice</b>: Undefined variable: abrakadabra in <b>/home/........../test.php</b> on line <b>5</b><br />
<br />
<b>Notice</b>: Undefined index: abrakadabra in <b>/home/........../test.php</b> on line <b>5</b><br />
1
это я снова ошибся :) $_COOKIE проверялась на установленность | |
|
|
|