За последние 24 часа нас посетили 16479 программистов и 1677 роботов. Сейчас ищут 886 программистов ...

SESSION или как их обоити?

Тема в разделе "PHP для новичков", создана пользователем warriors88, 15 янв 2017.

  1. warriors88

    warriors88 Новичок

    С нами с:
    15 янв 2017
    Сообщения:
    9
    Симпатии:
    0
    Доброе время суток, Знатоки.
    На сайта записываю от куда пришел посетитель, его ip, браузер и время.
    Также при этом стартует сессия.
    Если сессия активна данные не записываются.
    И тут заметик что не первый раз записывается 40-50 переходов в 1-2 минуты с одного сайта, одного ip и браузера.
    Получается проверку существования сессии как-то обходят.
    Подскажите как можно обезопасить себя от этого?
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ннничерта не понятно. Ты хочешь, чтобы человек мог переходить только с одного айпи, сайта и браузера, но тебе не нравится, когда человек переходит с одного айпи сайта и браузера? Что значит "обойти сессию"? Сессия - не механизм защиты. Она просто хранит между вызовами PHP данные, которые ты в нее положил. HTTP-это stateless протокол. PHP по дефолту тоже stateless - машина. Но это не круто, по этому завезли механизм для хранения состояния сеанса. Можно вообще хоть свой написать, не принципиально. Но из коробки тоже работает отлично.

    От чего ты хочешь обезопаситься? От появления посетителей?
     
  3. warriors88

    warriors88 Новичок

    С нами с:
    15 янв 2017
    Сообщения:
    9
    Симпатии:
    0
    Наверно не правильно выразился.
    Это для личной статистики, чтоб я видел с какого саита был переход.
    Сессия нужна чтоб не было записы если посетитель переходит повторно.
    --- Добавлено ---
    PHP:
    1. if(isset($_SERVER['HTTP_REFERER']) && ($_SESSION['referer'] < 1)){
    2. $referer = html($_SERVER['HTTP_REFERER']);
    3. $addr = html($_SERVER['REMOTE_ADDR']);
    4. $agent = html($_SERVER['HTTP_USER_AGENT']);
    5.  
    6. if (strpos($agent, "Firefox") !== false) $browser = "Firefox";
    7. elseif (strpos($agent, "Opera") !== false) $browser = "Opera";
    8. elseif (strpos($agent, "Chrome") !== false) $browser = "Chrome";
    9. elseif (strpos($agent, "MSIE") !== false) $browser = "Internet Explorer";
    10. elseif (strpos($agent, "Safari") !== false) $browser = "Safari";
    11. else $browser = "Неизвестный";
    12. if(stristr($agent, "Android")) { $agents = $browser.' (Android)'; }else{ $agents = $browser; }
    13. $s=mysql_query("INSERT INTO `stat` SET `referer`='".sql($referer)."', `addr`='".sql($addr)."', `agent`='".sql($agents)."', `date`='".num(time())."'");
    14. if($s == 'true'){ $_SESSION['referer'] = 1; }
    15. }
     
    #3 warriors88, 15 янв 2017
    Последнее редактирование модератором: 16 янв 2017
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    1) Ваш код уязвим для инъекций.
    2) mysql_ расширение устарело и уже не поддерживается в новых версиях пхп, используйте mysqli_;
    2) А вы, перед тем как вот сессию писать/читать, открывали ее? В противном случае вы просто создаете массив, который умирает вместе со скриптом.
     
  5. warriors88

    warriors88 Новичок

    С нами с:
    15 янв 2017
    Сообщения:
    9
    Симпатии:
    0
    Сессия работает. Ее значение верное.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Значит, не работает, если выставленная ранее метка не срабатывает. Либо это просто совпадение и пользователи разные, но с одинаковым браузером(дай угадаю, хром), с одного ip (дай угадаю, провайдерская подсеть), и с одного сайта - любого, откуда массово народ по ссылке пройти может. Либо это бот/пользователь, у которого банально отключены куки. Тогда сессия работать не будет.

    Не надо пилить самостоятельно аналитику. Воспользуйся гугловой. Она в тысячу раз круче и мощнее.
     
  7. warriors88

    warriors88 Новичок

    С нами с:
    15 янв 2017
    Сообщения:
    9
    Симпатии:
    0
    Все верно. Хром, феисбук и ростелеком.
    Спасибо))