Опасность Cookies в HTTP
1.
Better (31.08.2014 / 16:42)
Приветствую вех

Недавно у меня на сайте произошла утечка информации, а точнее один муфлон крал куки и входил под идентификаторами любого пользователя.Насколько я знаю, куки должны хранить в себе лишь некий условный идентификатор посетителя, причем выдается этот идентификатор на небольшой срок, во избежании утечки информации. Логины и пароли должны храниться в базе в зашифрованном виде.Все, вроде бы, так, НО у меня все таки "стырили" куки, и очевидно, что в них и хранятся логины и пароли юзеров.А случилось это с движком dcms.Да да, знаю что двиг не ахти.Так вот, собственно вопрос - каким образом можно убрать запись логина и пароля в куки?Или может быть по сессии он зашел?Вариантов куча, голова разрывается и, конечно же, мне срочно нужно решить эту проблему.Я не прошу вас писать коды и тому подобное, просто прошу совета по этой проблеме.Заранее благодарю всех.
2.
Zдешний (31.08.2014 / 17:26)
1.
Better, Я обычно еще сравниваю хеш из ип, юа пользователя с солью с записью в БД. Если не совпадает - прошу авторизоваться
3.
Better (31.08.2014 / 17:52)
2.
Zдешний, Остроумно, но не по теме
4.
Даниил (31.08.2014 / 18:02)
3.
Better, по идее при регистрации, должны записываться или при входе
5.
JustZero (31.08.2014 / 18:03)
3.
Better, уберешь запись логина и пароля в куки, пользователи задолбуться входить на сайт
6.
Дмитрий (31.08.2014 / 18:53)
Не путайте чувака, а то у него моск взорвется.
1.
Better, тебе надо думать не о том, что писать в куки (туда можно писать все что угодно). Тебе надо искать
каким образом эти куки воруют у пользователей. Найдешь дырку в скрипте и залатаешь ее, тогда проблема решится сама собой.
7.
Саша (31.08.2014 / 21:35)
задам вопрос не по теме)) а как можно своровать куки ЮЗЕР'ов? идет ведь запись в куки браузера, где данные одного юзера...
8.
shilo (31.08.2014 / 21:55)
7.
JaRUS, XSS
9.
VITAMIN (06.12.2014 / 23:00)
Для безопасности куки нужно устанавливать в режиме http only,таким образом хацкер не сможет получить их с JS и отправить на сниффер
10.
Tegos (06.12.2014 / 23:46)
9.
VITAMIN, ну, чисто теоретически, атрибут HttpOnly и использование SSL-соединения должны помочь, но не решают главную проблему.
11.
VITAMIN (07.12.2014 / 00:35)
10.
Tegos, да,если главная проблема - кривые руки
12.
Tegos (07.12.2014 / 01:01)
VITAMIN (6 Декабря 2014 / 22:35)
10. Tegos, да,если главная проблема - кривые руки
:-D
хах, да нет, я имел в виду, дыры в скрипте.
13.
Dmitry Kokorin (23.02.2015 / 15:06)
Подниму тему с вопросом:
Если при установке кук с параметрами ".site.ru" проверяется окончание домена то тогда какой смысл так делать
<?php
setcookie("name","data",time()+xxx,"/",".site.ru",true/false);
если mysite.ru подходит под шаблон?
14.
Tegos (23.02.2015 / 15:37)
13.
DimmoS, там нидге не проверяется окончание домена.
".site.ru" - куки доступные на site.ru + все поддомены.
15.
Dmitry Kokorin (23.02.2015 / 15:40)
14.
Tegos, просто вычитал пару статей по этому поводу вот и задумался,
На счет "+ все поддомены" это я норм понял
16.
Tegos (23.02.2015 / 15:45)
DimmoS (23 Февраля 2015 / 13:40)
это я норм вкурил
это как?
17.
Dmitry Kokorin (23.02.2015 / 15:48)
16.
Tegos, Всмысле понял
18.
Tegos (23.02.2015 / 15:52)
17.
DimmoS, тогда ок.
19.
Dmitry Kokorin (23.02.2015 / 16:09)
Скрытый контент: Для выполнения действия необходимо авторизоваться!
Интересная статья по теме
20.
Tegos (23.02.2015 / 16:45)
19.
DimmoS, интересно когда она написана ...
21.
Dmitry Kokorin (23.02.2015 / 17:53)
20.
Tegos, хз, Но интересная, кое-что взял на заметку
Думаю как можно максимально обезопасить сайт
Перебираю все попадающиеся варианты, на многие плевался как верблюд
22.
Dmitry Kokorin (23.02.2015 / 18:24)
Варианты:
ИП - отпадает сразу, думаю обьяснения излишни
ЮА - как вариант! Пример
<?php
$dataCode = md5($uid);
$dataHash = md5($ua.$uid.$upass);
setcookie("code",$dataCode,time()+10000);
setcookie("name",$dataHash,time()+10000);
//auth
$res = query("SELECT `id`,`pass` FROM `user` WHERE `code`='".$dataCode."' LIMIT 1");
If(!$res){
//stop
}else{
$data = $res->fetch_object();
if($_COOKIE['name'] == md5($ua.$data->id.$data->pass){
//session write
}
Чо-то типа того..
Соль и т.п по аналогии. .
Думаю что еще добавить /заменить
23.
KpuTuK (23.02.2015 / 18:44)
22.
DimmoS, можно чтото типа токенов сделать временных
<?php
$token = explode(':', $data->user_token);
if (isset($_COOKIE['user_token']) && isset($_COOKIE['user_token_time'])) {
if ($token[0] === $_COOKIE['user_token']) {
if (time() < $_COOKIE['user_token_time']) {
// Все гуд
} elseif (time() === $_COOKIE['user_token_time']) {
// создаем новый токен и пишем его в куки и базу
}else {
// Уведомление о том что токен устарел
}
} else {
// Уведомление о том что токен не действителен
}
}
можно сделать еще вечный токен и менять его поле каждой авторизации и если временный токен устарел то смотреть по вечному
хотя может и бред
24.
Dmitry Kokorin (23.02.2015 / 19:00)
23.
KpuTuK, еще думаю как вариант хранить в базе некий "секретный слоВо" при авторизации по кукам спрашивать это слово и если гут то писать в сессию что все Ок если нет то просим авторизации
Это как ключ от дома тебя как бы узнают дома но без секрета не пускают, таким образом даже если сп**ть куки то никак не авторизируешься пока не ведешь этот секрет
25.
shilo (23.02.2015 / 19:01)
23.
KpuTuK, полный... два токена вместо одного, с какой целью? зачем нужен временный, если есть постоянный?
Почему-бы не использовать ttl кук, вместо вот этого велосипеда с сравнением времени?
26.
Dmitry Kokorin (23.02.2015 / 19:05)
25.
shilo, я думаю мой варик в п.24 лучше подойдет чем токены
27.
Tegos (23.02.2015 / 23:06)
кому нужна такая безопасность?
28.
Dmitry Kokorin (23.02.2015 / 23:38)
27.
Tegos, мне
29.
Tegos (24.02.2015 / 01:19)
28.
DimmoS, ты веришь что у тебя кто-то будет куки воровать?
30.
Dmitry Kokorin (24.02.2015 / 03:05)
29.
Tegos, всякое бывает, никто не застрахован. .
31.
shilo (24.02.2015 / 06:37)
26.
DimmoS, а смысл тогда в секретном слове? можно заставить логин и пароль вводить.
Такой подход имеет смысл только при одноразовых словах (например если код в СМС высылается, или при регистрации выдаётся список таких кодов).
32.
Dmitry Kokorin (24.02.2015 / 23:27)
<?php
array(2) {
["referrer"]=> string(44) "[nonsec]visavi.net/forum/topic.php?tid=42010"
["supportOnlineTalkID"]=> string(32) "NHpdyU3SVF5USqNuaX8Gws2Ktmv0BrUx" }
Кто сталкивался с подобными куками?
Добавлено через 00:59 сек.
И ведь не удаляются никак зараза
Добавлено через 08:37 сек.
[nonsec] гуглил толк 0
33.
Сергей (25.02.2015 / 01:33)
Автор , выход есть . Таскать данные в GET .
URL:
https://visavi.net/topics/41259