Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хорошо ли экономить сессии? 
:(
    Опции темы
smartov
Дата 16.7.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



ksnk, я так и не понял где кто кого ломает. 
PM MAIL   Вверх
ksnk
Дата 16.7.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(smartov @  16.7.2010,  19:03 Найти цитируемый пост)
ksnk, я так и не понял где кто кого ломает. 


Цитата(Muerto @  16.7.2010,  18:18 Найти цитируемый пост)
Ты узнал шифр, 8df8a6c6eb3f2389631a4ef87a263c06

Какая схема входа на сайт? что тебе это реально дало?

если считать , что кроме этого шифра мы знаем имя куки, IP и юзер агента, то мы можем прикинутся клиентом и получить доступ к сайту... Просто подставив курлом, к примеру, правильные хидеры и куки...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Muerto
Дата 16.7.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



ksnk, Да, допустим если вам выдать все данные, то логин уже и не нужен.
Но а кто сказал что вы выдрать сессию сможете или куки у пользователя своровать если сам сайт грамотно написан?

Собственно с моей точки зрения итоги спора такие:

1. Взломать если очень хотеть и есть дыры в безопасности - не проблема
2. проверять пароль или нет, если взломают сервер - значение не имеет
3. если можно перехватывать данные опять же не важно как и что хранить
4. не закодированный пароль хранить нельзя, и цель защиты от ламеров в клубе, то если хранить кодированный пароль то тот ламер ничего с этим не сделает.
5. куки или сессия не имеет значения пока данные закодированные...

По крайней мере это то что я извлек для себя...
т.е. главное общая безопасность кода  , потому что иначе хранить пароль или нет , без разницы

Это сообщение отредактировал(а) Muerto - 16.7.2010, 19:25


--------------------
user posted image
PM MAIL   Вверх
ksnk
Дата 16.7.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Muerto, куки , а также все хидеры, выдаваемые броузером ВИДИТ провайдер, любой участник вашего сегмента локальной сети, любой из цепочки передающих-принимающих узлов интернета.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Vasay
Дата 16.7.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Muerto 

Похоже Вы уже сами себя запутали. Давайте расставим запятые над i  smile :

1. Пароль пользователя никогда не хранят в открытом виде - ни в базе, ни в сессии, ни в файлах.... так как если Вы как программист, или администратор допустили ошибку и позволили взломать ваш сайт/сервер/базу -  то злоумышленник получает пароль пользователя, который, с большой вероятностью, используется не только на вашем сайте.


2. Если Вы не используете шифрование канала (в самом простом случае https) - то любой, кто может прослушать канал (ваш сосед, админ провайдера, "кул хацкер" сканящий спутниковый канал (если у вас или у вашего провайдера спутниковый download), "кул хацкер" сканящий открытый (или плохо закрытый) wi-fi канал) - спокойно может подделать сессию, какой бы сложный алгоритм идентификатора сессии вы бы не использовали.

Так что если у Вас используется работа с деньгами - то простой http вам противопаказн!!! 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
capitan
Дата 16.7.2010, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



А теперь я расскажу как все должно работать.
1. Все необходимые данные логин, никнейм, id и т.д. которые выводятся на каждой странице сайта хранятся в сессии. Дабы не делать постоянные запросы в базу и не нагружать её.
2. В куке хранится логин и хеш пароля, который лежит в базе. При заходе на сайт проверяется сессия. Проверяется не через isset, а через !empty. Например проверяем id пользователя. if (!empty($_SESSION['id'])) { пользователь авторизован }  иначе проверяем куку. Если в куках есть логин и хеш пароля - запрос в базу. Если связка логин - пароль в базе есть, пишем в сессию необходимые данные и пускаем пользователя дальше.  Если данных нет или нет кук - посылаем на авторизацию.
3. При секретных операциях, например, при смене кошелька, запрашиваем у пользователя пароль и работаем с полученными данными.
4. Для суперсекретных операций используем https  или службу поддержки, которая сама вносит изменения.
5. При залогинивании пользователя пишем в базу с какого ip и время захода. И показываем эти данные. Юзеры в случае чего сами скажут, если кто-то вошел под их данными.

P.S. даже если я получу куки пользователя - максимум что смогу сделать - побродить по сайту под пользователем. Т.к. не зная пароля, не смогу выполнить секретные операции.
PM MAIL WWW ICQ   Вверх
Vasay
Дата 16.7.2010, 23:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



capitan, 
Цитата(capitan @  16.7.2010,  23:09 Найти цитируемый пост)
В куке хранится логин и хеш пароля, который лежит в базе. 



не надо хранить хеш пароля в куках. 

Если злоумышленник получает хэш пароля - то у него есть шанс получить пароль через BruteForce.

кроме того - информация характеризующая сессию должна меняться от логина к логину.  А то однажды получив эти данные злоумышленник приконнектися от имени пользователя в любой момент с любого компа.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
ksnk
Дата 16.7.2010, 23:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Vasay @  16.7.2010,  23:40 Найти цитируемый пост)
не надо хранить хеш пароля в куках. 

Было бы очень интересно услышать, как работает галочка "сохранить пароль" в окне авторизации...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Vasay
Дата 17.7.2010, 00:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Цитата(ksnk @  16.7.2010,  23:46 Найти цитируемый пост)
Было бы очень интересно услышать, как работает галочка "сохранить пароль" в окне авторизации...



Как сделано здесь - не знаю, но  вообще достаточно положить в куки некое Session ID. Как его генерировать - это уже другой вопрос, но точно не как хеш от пароля.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
ksnk
Дата 17.7.2010, 00:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Vasay @  17.7.2010,  00:01 Найти цитируемый пост)
Как сделано здесь - не знаю,

pforummember_id=XXXXX; pforumpass_hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; достаточно открыть куки и посмотреть...
Цитата(Vasay @  17.7.2010,  00:01 Найти цитируемый пост)
но  вообще достаточно положить в куки некое Session ID
 sessionId подразумевает, что где-то на сервере будет организовано хранилище данных с неопределенным (4 недели?) временем хранения. Чем наличие этого sessionId будет секретнее хеша пароля в куках?



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Vasay
Дата 17.7.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



ksnk, 

Цитата

pforummember_id=XXXXX; pforumpass_hash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; достаточно открыть куки и посмотреть...


ну что сказать, 
Цитата

 Powered by Invision Power Board® 1.3 © 2003


Наверно, стоит потратиться на более новую версию форума.  Может и ломать так часто не будут.


Кстати, ща посмотрел доки к spring-security 3

Самый примитивный способ который они предлагают:

Цитата

    base64(username + ":" + expirationTime + ":" +
             md5Hex(username + ":" + expirationTime + ":" password + ":" + key))

    username:          As identifiable to the UserDetailsService
    password:          That matches the one in the retrieved UserDetails
    expirationTime:    The date and time when the remember-me token expires,
                       expressed in milliseconds
    key:               A private key to prevent modification of the remember-me token
        


key, если он действительно сложный, конечно, защитит пароль, но если он попадает в словари, то возможен его подбор. 

Более безопасный вариант. предлагаемый spring-security - с использованием базы данных с такой табличкой:

Код

create table persistent_logins (username varchar(64) not null, series varchar(64) primary key, 
token varchar(64) not null, last_used timestamp not null)


Добавлено @ 00:35
Цитата

Чем наличие этого sessionId будет секретнее хеша пароля в куках?


тем что получение злоумышленником sessionId даст ему возможность залогиниться в системе. Да это плохо, но не так плохо, как если бы он узнал пароль.

а вот как раз знание хеша пароля в 90% случаев даст сам пароль, так как пользователи редко придумывают пароли вида "hIn4ak8Bei7hBgHGgA71Q". чаще пароль - это что-то типа "Msha123" И такие пароли легко восстанавливаются из хеша методом перебора с применением словарей. 

Это сообщение отредактировал(а) Vasay - 17.7.2010, 00:36


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Muerto
Дата 17.7.2010, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Vasay, В таких случаях помогает очень если алгоритм хеширования не стандартный
вообще для каждого пользователя ключ может быть уникален

Код

<?php
if (CRYPT_STD_DES == 1) {
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}

if (CRYPT_EXT_DES == 1) {
    echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}

if (CRYPT_MD5 == 1) {
    echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}

if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}

if (CRYPT_SHA256 == 1) {
    echo 'SHA-256:      ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}

if (CRYPT_SHA512 == 1) {
    echo 'SHA-512:      ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
?>



Вот что выдаст
Код

Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5:          $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish:     $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
SHA-256:      $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
SHA-512:      $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21


И выходит, изменяешь пару символов и у тебя уже свой метод кодировки,и хацкеру ещё надо будет узнать какой он...
А в случае SHA-512 я не знаю если это вообще реально  не взломав сервер, да и просто blowfish

Это сообщение отредактировал(а) Muerto - 17.7.2010, 00:56


--------------------
user posted image
PM MAIL   Вверх
Vasay
Дата 17.7.2010, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 1
Всего: 73



Цитата(Muerto @  17.7.2010,  00:52 Найти цитируемый пост)
вообще для каждого пользователя ключ может быть уникален


а зачем тогда пароль в алгоритме хеширования?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Muerto
Дата 17.7.2010, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Vasay, ну если уже храните пароль, так не стандартным хешем...


--------------------
user posted image
PM MAIL   Вверх
gcc
Дата 17.7.2010, 04:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



1) вот специально разработали REST, чтобы сессии не использовать, не хранить их все на сервере
http://ru.wikipedia.org/wiki/REST
http://en.wikipedia.org/wiki/Representational_State_Transfer

2) на этом форуме, вроде бы используется md5crypt($db_name,$db_name.'-'.$db_pass) (или просто md5) чтобы сравнить сессию в cookie нужно получить хэш с  md5crypt
$db_pass - как "соль", обратно декриптографировать нельзя и перебрать соответственно нелья, так как $db_pass не известно.
(единственное что в базе пароль в открытом виде... не хорошо)


Это сообщение отредактировал(а) gcc - 17.7.2010, 05:16
PM WWW ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.