Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Безопасность COOKIE
 
 автор: Ванек2010   (30.07.2011 в 17:20)   письмо автору
 
 

Подскажите как лучше работать с куками:
Есть страница голосования, каждый анонимный юзер может проголосовать 1 раз в 24 часа.
При переходе на страницу голосования юзер получает кукисы
<?php
if(!isset($_COOKIE['votetime'])) setcookie('votetime'time());

Страница голосования проверяет, прошло ли 24 часа
<?php         
        $votetime 
$_COOKIE['votetime'];
        
$votetime += (24 60 60); 
        
$curtime time();
        
        if(
$votetime $curtime) {
            
$votetime -= $curtime;
            
$votetime $votetime 60 60;
            echo 
'Вы не можете еще голосовать '.$votetime.' часов';
            
        } else { 
                
Все ок24 часа прошлоразрешаем проголосовать...
        }

Меня мучает вопрос с безопасностью кукисов, их ведь могут подделать? Тогда если подделать значение votetime, юзер сможет накрутить голоса.

  Ответить  
 
 автор: cheops   (30.07.2011 в 17:50)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 17:20)
 

Да может, а роботу их даже подделывать ничего не придется, он просто не будет поддерживать cookie и у него значение $votetime будет постоянно равно 0.

  Ответить  
 
 автор: Ванек2010   (30.07.2011 в 17:57)   письмо автору
 
   для: cheops   (30.07.2011 в 17:50)
 

>а роботу их даже подделывать ничего не придется, он просто не будет поддерживать cookie и у него значение $votetime будет постоянно равно 0.
Не понял, вы о чем?
Подскажите как можно безопасно проверить то что пользователь сможет проголосовать в следующий раз не раньше чем через 24 часа, и у него должен остаться тот же IP адрес, статический.

  Ответить  
 
 автор: cheops   (30.07.2011 в 18:09)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 17:57)
 

>Не понял, вы о чем?
Что произойдет, если cookie отключены? Т.е. вместо любых переменных к вам поступают 0?

>Подскажите как можно безопасно проверить то что пользователь сможет проголосовать в
>следующий раз не раньше чем через 24 часа, и у него должен остаться тот же IP адрес,
>статический.
Практически никак - если захотят накрутить, накрутят... если только не вводить очень жестких мер, вроде регистрацию и права голосова только у тех посетителей, которые проявляли активность не позднее, чем неделю назад. Просто cookie защититься практически невозможно.

  Ответить  
 
 автор: f111   (30.07.2011 в 18:20)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 17:57)
 

>Меня мучает вопрос с безопасностью кукисов, их ведь могут подделать?
зачем их подделывать, если они легко удаляются

>Подскажите как можно безопасно проверить то что пользователь сможет проголосовать в следующий раз не раньше чем через 24 часа, и у него должен остаться тот же IP адрес, статический.

в базу слабо записать?

>Практически никак - если захотят накрутить, накрутят (cheops)
даже базу? если сравнить по айпи и времени, то никак. или можно? анука

  Ответить  
 
 автор: Ванек2010   (30.07.2011 в 18:41)   письмо автору
 
   для: f111   (30.07.2011 в 18:20)
 

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

>даже базу? если сравнить по айпи и времени, то никак. или можно? анука
Кстати да, отправляем пользователю два кука, первый кук со временем, второй с его текущим IP и точно такие же данные в базу заносим, через 24 часа он возвращается, и проверяем есть ли в базе такой IP адрес и время сверяем в базе и в кукисах если все идентично, то говорим что голос успешно зафиксирован

  Ответить  
 
 автор: cheops   (30.07.2011 в 19:00)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 18:41)
 

>>зачем их подделывать, если они легко удаляются
>При удалении их нечего не произойдет, вам снова предоставят куки и снова ждать 24 часа, если
>куки отключены, то проголосовать нельзя будет.
Установка Cookie подразумевает, что клиент вам отправит HTTP-заголовок с cookie, если он это не сделает, то в массиве $_COOKIE не будет ничего, а ваша переменная получит значение 0, к которой прибавится 24 * 3600, что в любом случае меньше любого времени чуть подальше от 1970 года. Робот вам cookie будет отправлять только в том случае, если вы ему без них не дадите работать, а так он не будет заморачиваться на получение от вас cookie и отправку вам их обратно. Это только браузер делает автоматически, и то пользователь эту возможность может отключить в любой момент. Накрутить ваш счетчик смогут обычные пользователи, которые не умеют программировать.

>>даже базу? если сравнить по айпи и времени, то никак. или можно? анука
>Кстати да, отправляем пользователю два кука, первый кук со временем, второй с его текущим IP
>и точно такие же данные в базу заносим, через 24 часа он возвращается, и проверяем есть ли в
>базе такой IP адрес и время сверяем в базе и в кукисах если все идентично, то говорим что голос
>успешно зафиксирован
Сама по себе база данных ничего не дает, дать может только способ организации данных в ней. IP-адрес в современных условиях не лучшее решение, десятки тысяч пользователей сидят из под одного или нескольких IP-адресов. У другой части пользователей IP-адрес меняется в результате реконнекта, который может происходить постоянно. Т.е. у одних неограниченный ресурс для накрутки - отключайся от провайдера и присоединяйся снова, пока его пул не выберешь, а для других - один человек блокирует сразу гору других. Одного IP-адреса мало, нужно что-то, чем пользователь будет дорожить или что не сможет получить махом, например, неделю активного посещения сайта под одним аккаунтом или гору сообщений на форуме из под этого ника. В этом случае - голос из под этого аккаунта - действительно голос.

  Ответить  
 
 автор: f111   (30.07.2011 в 20:01)   письмо автору
 
   для: cheops   (30.07.2011 в 19:00)
 

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

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

>десятки тысяч пользователей сидят из под одного или нескольких IP-адресов.
меня это не пугает, хоть город))))) хотя конечно пользователю Ванек2010 решать

  Ответить  
 
 автор: f111   (30.07.2011 в 19:54)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 18:41)
 

>При удалении их нечего не произойдет, вам снова предоставят куки и снова ждать 24 часа

при первом посещении сайта кук нет, я проголосовал, скрипт их создал, я их вручную стёр, проголосовал и снова скрипт выдал куки, и так можно пока кто-то не умрёт от идиотизма.

так что куки ваши это как банный листик на причинном месте

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

и бла бла бла......нах слать куки, если можно пользоваться только базой, зачем они вам?
тогда можно вспомнить и про сессии, их не подделать, но жить они будут пока пользователь на сайте.

  Ответить  
 
 автор: Ванек2010   (30.07.2011 в 22:15)   письмо автору
 
   для: f111   (30.07.2011 в 19:54)
 

>при первом посещении сайта кук нет, я проголосовал, скрипт их создал, я их вручную стёр, проголосовал и снова скрипт выдал куки, и так можно пока кто-то не умрёт от идиотизма.
Не получится, куки отправляются в конфиг файле, который конектится к остальным, тобишь любой пользователь не сможет сразу проголосовать, а только через 24 часа.

>и бла бла бла......нах слать куки, если можно пользоваться только базой, зачем они вам?
Куки, как дополнительная сверка и если у пользователя динамик IP и меняется только последнее значение, допустим пользователь получил куки
cookie: IP: 122.54.65.1
MySQL IP: 122.54.65.1
Через 24 часа он возвращается с IP 122.54.65.2 , тобишь уже сменился
Из базы выбераем 122.54.65.1, если такой найден, плюс в базу можно занести вид бразуера пользователя и его проверить, если совпал браузер и IP то голос засчитан.
Также в базу можно занести время и сверять его с куками, если не сходится, куки подделаны и голос не засчитан, куки отправлены заного.

  Ответить  
 
 автор: f111   (31.07.2011 в 01:20)   письмо автору
 
   для: Ванек2010   (30.07.2011 в 22:15)
 

>>куки ваши это как банный листик на причинном месте
дополнительная ненужная морока.

>куки отправляются в конфиг файле
не знаю что такое конфиг файл. а что помешает изменить куки?

сделайте как предложил cheops, и не страдайте ....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования