|
|
|
|
|
для: AVS
(27.01.2008 в 12:53)
| | Спасибо за этот совет, теперь все отлично работает! | |
|
|
|
|
|
|
|
для: T-Ray
(27.01.2008 в 10:40)
| | Вот после куска кода, где выполняется переадресация на авторизацию, поставьте exit(). Таким образом, после того, как на страницу будет отрпавлен мета-тег с переадресацией, скрипт завершит свою работу и ничего больше не выведется пользователю в браузер. | |
|
|
|
|
|
|
|
для: T-Ray
(27.01.2008 в 10:40)
| | Попробуйте мета тэги функцией exit() выводить | |
|
|
|
|
|
|
|
для: T-Ray
(27.01.2008 в 07:33)
| | где же ответ? плиз, нужна помощь! | |
|
|
|
|
|
|
|
для: ЯR
(27.01.2008 в 07:01)
| | спасибо. изменил код:
<?php
error_reporting(E_ALL ^ E_NOTICE);
if(!isset($_COOKIE['password']))
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'></HEAD></HTML>";
}
if(!isset($_COOKIE['login']))
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'></HEAD></HTML>";
}
if (!get_magic_quotes_gpc())
{
$_COOKIE['login'] = mysql_escape_string($_COOKIE['login']);
$_COOKIE['password'] = mysql_escape_string($_COOKIE['password']);
}
require_once('../includes/db_control.php');
$connector = new dbControl();
$query = $connector->query("select login from name_of_table where password='".$_COOKIE['password']."'");
$usr = $connector->fetchArray($query);
if ("".$usr['login']."" == $_COOKIE['login'])
{
}else{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'></HEAD></HTML>";
}
?>
|
Теперь появился следующий вопрос:
На страницу, посещать которую может, только залогинившийся пользователь (index.php) я ставлю require_once с адресом к коду выше. Когда заходишь на index.php, автоматически перекидывает на login.php, но буквально 1-2 секунды почему-то видно весь контент index.php ))))))) как это исправить? т.е. чтобы пока не авторизуешься не было видно контента ни секунды.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: T-Ray
(27.01.2008 в 06:41)
| | нет, всё ОК, просто нужно вывод notice отключить (можно, например, ф-ей error_reporting(E_ALL ^ E_NOTICE)) | |
|
|
|
|
|
|
|
для: ЯR
(27.01.2008 в 06:11)
| | что-то понять не могу... я вставил в код этот фрагмент:
if (!get_magic_quotes_gpc())
{
$_COOKIE['login'] = mysql_escape_string($_COOKIE['login']);
$_COOKIE['password'] = mysql_escape_string($_COOKIE['password']);
}
|
и теперь, когда удаляешь или правишь куки, то тебя не выкидывает, а появляется ошибка:
Notice: Undefined index: login in file.php on line #
Notice: Undefined index: password in file.php on line #
может лучше не использовать эту функцию (magic_quotes) или если использовать, то подскажите как.
спасибо | |
|
|
|
|
|
|
|
для: ЯR
(27.01.2008 в 06:11)
| | magic_quotes включено конечно! Эта функция в require_once.
Подделывать тут можно login и password. Допустим если знать login другого пользователя и подделать его, то можно провести sql инъекцию и узнать пароль. А так как здесь проверяется, различны ли куки или нет, то подделать их соответственно нельзя. Т.е. можно конечно подделать, но при этом должны совпадать и login и password с тем, что есть в базе, а зачем тогда подделывать все, если можно ввести данные в форму авторизации?)))). Но сейчас я постораюсь сделать сессии и тогда эта возможность будет исключена. я надеюсь...
очень хотелось бы увидеть мнение пользователя !!!CHEOPS!!! :) | |
|
|
|
|
|
|
|
для: T-Ray
(27.01.2008 в 05:37)
| | magic_quotes хотябы включены? Если да, то, вроде, нормальная авторизация, только не вижу тут защиты от подделки, да и что тут подделывать-то? | |
|
|
|
|
|
|
| Сделал авторизацию на куках, вот код:
------------------------------------------------------------
<?php
if(!isset($_COOKIE['password']))
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'></HEAD></HTML>";
}
require_once('../includes/db_control.php');
$connector = new dbControl();
$query = $connector->query("select login from table_of_base where password='".$_COOKIE['password']."'");
$usr = $connector->fetchArray($query);
if ("".$usr['login']."" == $_COOKIE['login'])
{
}else{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=login.php'></HEAD></HTML>";
}
|
---------------------------------------------------------------------
Здесь сперва проверяется наличие password в куках, если такой нет, то редирект на форму авторизации, если есть, то дальше идет запрос в базу данных. Вибираем login из таблицы "table_of_base", где password должнен соответствовать password'у в куках. Допустим password'ы совпадают, тогда дольше проверяется логин, который был взят из базы. Если логин из базы соответствует логину из куков, то все в порядке.
Допустим злоумышленник решил поменять в куках login или password (кстати пароль md5), то при обновлении или переходе на другую страницу его просто выкинет на форму авторизации.
скажите, такой метод защиты куков от подделки безопасен и насколько безопасен?
Заранее большое спасибо! Если где-то непонятно объяснил, то буду рад растолковать еще раз и очень подробно. | |
|
|
|
|