Опасность Cookies в HTTP

1. Better (31.08.2014 / 16:42)
Приветствую вех smile Недавно у меня на сайте произошла утечка информации, а точнее один муфлон крал куки и входил под идентификаторами любого пользователя.Насколько я знаю, куки должны хранить в себе лишь некий условный идентификатор посетителя, причем выдается этот идентификатор на небольшой срок, во избежании утечки информации. Логины и пароли должны храниться в базе в зашифрованном виде.Все, вроде бы, так, НО у меня все таки "стырили" куки, и очевидно, что в них и хранятся логины и пароли юзеров.А случилось это с движком dcms.Да да, знаю что двиг не ахти.Так вот, собственно вопрос - каким образом можно убрать запись логина и пароля в куки?Или может быть по сессии он зашел?Вариантов куча, голова разрывается и, конечно же, мне срочно нужно решить эту проблему.Я не прошу вас писать коды и тому подобное, просто прошу совета по этой проблеме.Заранее благодарю всех.

2. Zдешний (31.08.2014 / 17:26)
1. Better, Я обычно еще сравниваю хеш из ип, юа пользователя с солью с записью в БД. Если не совпадает - прошу авторизоваться D

3. Better (31.08.2014 / 17:52)
2. Zдешний, Остроумно, но не по теме smile

4. Даниил (31.08.2014 / 18:02)
3. Better, по идее при регистрации, должны записываться или при входе smile

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, да,если главная проблема - кривые руки smile

12. Tegos (07.12.2014 / 01:01)
VITAMIN (6 Декабря 2014 / 22:35)
10. Tegos, да,если главная проблема - кривые руки smile
:-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, там нидге не проверяется окончание домена. smile
".site.ru" - куки доступные на site.ru + все поддомены.

15. Dmitry Kokorin (23.02.2015 / 15:40)
14. Tegos, просто вычитал пару статей по этому поводу вот и задумался,
На счет "+ все поддомены" это я норм понял smile

16. Tegos (23.02.2015 / 15:45)
DimmoS (23 Февраля 2015 / 13:40)
это я норм вкурил smile
это как?

17. Dmitry Kokorin (23.02.2015 / 15:48)
16. Tegos, Всмысле понял D

18. Tegos (23.02.2015 / 15:52)
17. DimmoS, тогда ок. smile

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, хз, Но интересная, кое-что взял на заметку
Думаю как можно максимально обезопасить сайт
Перебираю все попадающиеся варианты, на многие плевался как верблюд smile

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)
кому нужна такая безопасность? smile

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