при входе на сайт проверяется
if ($_COOKIE['mycookie']!="somevalue") header("...");
При вводе пароля кука устанавливается, а далее в каждом скрипте проверяется, установлена ли она. В самой куке хранится некий код, на основе которого можно войти на сайт. Соответственно, устанавливается она только при правильном вводе пароля
Спустя 28 минут, 5 секунд (19.12.2010 - 20:12) waldicom написал(а):
Если эту куку своровать, то зайти сможет любой.
Спустя 44 секунды (19.12.2010 - 20:13) vasa_c написал(а):
Это стандартный механизм авторизации, который везде и используется.
А насколько легко сломать зависит от того как генерируется этот "некий код".
А насколько легко сломать зависит от того как генерируется этот "некий код".
Спустя 3 часа, 30 минут, 10 секунд (19.12.2010 - 23:43) ИНСИ написал(а):
Цитата |
if ($_COOKIE['mycookie']!="somevalue") header("..."); |
ЭТО НЕ АВТОРИЗАЦИЯ!!! Выложи всю авторизацию и только потом можно будет сказать, что-нибудь....
Спустя 13 минут, 10 секунд (19.12.2010 - 23:56) motorway написал(а):
Пока что я привел сам пример кода, готового нет, это заготовки. Здесь предполагается, что данный код запускается на всех страницах админки/сайта и перенаправляет на страницу ввода пароля, если нет куки. А почему не авторизация? Соответственно, после ввода пароля правильного используется SetCookie
Спустя 1 минута, 24 секунды (19.12.2010 - 23:57) divine266 написал(а):
это только проверка на наличие куки
Спустя 20 минут, 30 секунд (20.12.2010 - 00:18) motorway написал(а):
Ну тогда еще проверка пароля и установка куки:
Примерно так.
А на всех страницах будет инклуд той проверки куки. Если ее нет, переадресуем, если есть, продолжаем
if ($_POST['pass']=='password' and $_POST['login']=='login') SetCookie(...);
Примерно так.
А на всех страницах будет инклуд той проверки куки. Если ее нет, переадресуем, если есть, продолжаем
Спустя 4 минуты, 1 секунда (20.12.2010 - 00:22) ИНСИ написал(а):
motorway ну, использовать все время куки, так не делается. Вот пример:
- 1. Проверяем, есть ли сессия
1.1 Делаем, что хотим
2. Проверяем, есть ли куки
2.1. Проверяем в БД, есть ли запись такой же hash, какой в куки
2.2 Если есть, то создаем сессию + куки, обновляем в БД hash куки и перенаправляем на нужную страницу
2.3 Если нет, то удаляем ее
Спустя 2 минуты, 59 секунд (20.12.2010 - 00:25) divine266 написал(а):
уменя тогда вопрос, а для чего хранить хеш куки в базе?
Спустя 10 минут, 5 секунд (20.12.2010 - 00:35) ИНСИ написал(а):
допустим у меня есть:
и в БД есть запись:
Когда я войду на сайт, то проверка будет такой:
ЭТО ТОЛЬКО ПРИМЕР! Надо шифровать hash и т.д...
$_COOKIE['hash'] = 'abc';
и в БД есть запись:
id - 1, name - welbox2, hash - abc
Когда я войду на сайт, то проверка будет такой:
"SELECT * FROM `users` WHERE `hash` = '{$_COOKIE['hash']}'"
ЭТО ТОЛЬКО ПРИМЕР! Надо шифровать hash и т.д...
Спустя 1 минута, 49 секунд (20.12.2010 - 00:37) divine266 написал(а):
а спасибо, и я так понял каждый раз надо его обновлять?
Спустя 13 минут, 44 секунды (20.12.2010 - 00:51) ИНСИ написал(а):
divine266 ну, все по разному делают. Кто-то заносит в хеш логин + пароль (не очень), кто-то генерирует через функцию уникальные свои хеши (я делаю так), а потом заносят 2 раза в md5 и обновляют в БД когда пользователь входит через форму. Пользователи могут войти на сайт через раные компы, поэтому когда он входит через форму, лучше сбросить хеш и записать новый.
Спустя 11 минут, 10 секунд (20.12.2010 - 01:02) divine266 написал(а):
понял спасибо
Спустя 22 часа, 38 минут, 16 секунд (20.12.2010 - 23:40) motorway написал(а):
Цитата (welbox2 @ 19.12.2010 - 21:22) |
motorway ну, использовать все время куки, так не делается. |
А почему так плохо? Именно из-за безопасности или просто какие-то неудобства для пользователя возможные?
Спустя 5 минут, 7 секунд (20.12.2010 - 23:45) divine266 написал(а):
Именно из-за безопасности
Спустя 12 часов, 54 минуты, 34 секунды (21.12.2010 - 12:40) ИНСИ написал(а):
Цитата |
Именно из-за безопасности или просто какие-то неудобства для пользователя возможные? |
По сути для одного сеанса никакой разницы между сессией и куками нет, просто сессия более удобна для программирования (сессия, тоже самое что и куки которые автоматом передаются между страницами)