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

Форум PHP

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

 

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

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

тема: Защита от накрутки при помощи COOKIES
 
 автор: tima2010   (01.03.2012 в 22:20)   письмо автору
 
 

Привет!
На сайте пользователям разрешено писать личные сообщения. Запись происходит в БД mysql.

В защиту от спама рассматриваю вариант защиты при помощи COOKIES

К примеру происходит действие записи и пользователю присваиваем cookies перед этим проверяем если печенка существует выводим ошибку иначе записываем.


<?php
if(isset($_POST['add'])) {

    if(isset(
$_COOKIE['check'])) {
        return 
'Не спамить! Не чаще 2 секунд';
    } else {
        
/* Запись в базу ... */
        
setcookie ("check""1"time() + 2);
    }

}
?>


Эффективен ли такой способ? Легко ли его обойти или что использовать лучше?

Спасибо!.

  Ответить  
 
 автор: cheops   (01.03.2012 в 22:33)   письмо автору
 
   для: tima2010   (01.03.2012 в 22:20)
 

Да, довольно легко обходится, более того работает только против людей... роботы (а 99% спама от них) просто не будут устанавливать cookie. Лучше защиты при помощи capture нет. Ну или вообще запретить использовать ссылки в сообщениях. Без возможности оставлять ссылки на сайте вы спамерам не интересны.

  Ответить  
 
 автор: tima2010   (01.03.2012 в 22:40)   письмо автору
 
   для: cheops   (01.03.2012 в 22:33)
 

>> Лучше защиты при помощи capture нет
простите, что такое capture

Допустим я рассчитываю только на людей, хотя бы против них :)

Каким образом можно обойти не считая отключения cookie и капчи? Или лучше использовать другой метод?

  Ответить  
 
 автор: Sfinks   (02.03.2012 в 01:02)   письмо автору
 
   для: tima2010   (01.03.2012 в 22:40)
 

> Допустим я рассчитываю только на людей, хотя бы против них :)
> Каким образом можно обойти не считая отключения cookie и капчи?
Защита от честных людей, я бы сказал. А в чем смысл?

> простите, что такое capture
http://www.captcha.ru/

  Ответить  
 
 автор: tima2010   (02.03.2012 в 08:40)   письмо автору
 
   для: Sfinks   (02.03.2012 в 01:02)
 

отсечение ботов происходит при регистрации
все сообщения не пригодны для спам ботов

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

Но каким способом лучше определить, что посетитель начал флудить?

Для меня важен сам подход решения задачи. Если Cookie не надежны то как лучше?

спасибо.

  Ответить  
 
 автор: Valick   (02.03.2012 в 09:00)   письмо автору
 
   для: tima2010   (02.03.2012 в 08:40)
 

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

  Ответить  
 
 автор: tima2010   (02.03.2012 в 09:03)   письмо автору
 
   для: Valick   (02.03.2012 в 09:00)
 

Модераторы для личных сообщений, не слышал.

Создается временная кука которая живет 2 сек. если она существует показываем пользователю что нельзя выполнять действие так быстро.

Запросами в бд это не слишком нагрузочное действие ?

  Ответить  
 
 автор: Sfinks   (02.03.2012 в 09:11)   письмо автору
 
   для: tima2010   (02.03.2012 в 09:03)
 

Тогда в сессии храните время последнего сообщения, раз зарегистрированные.

  Ответить  
 
 автор: Valick   (02.03.2012 в 09:29)   письмо автору
 
   для: Sfinks   (02.03.2012 в 09:11)
 

зачем? можно подумать сессии панацея и не грузят сервер и не хавают память :)
я не понимаю почему автор привязался к 2-м секундам, это все таки не чат
для личных сообщений и 20 секунд будет нормой, и уж сделать селект перед инсертом ну никак не создаст зверской нагрузки на сервер mysql
___
в конце концов сессии - это файл, БД - это тоже файл :)
кстати не сталкивались с переопределением механизма сессий, когда используют БД и один из нюансов это избавление от механизма сериализации, как думаете почему?))

  Ответить  
 
 автор: tima2010   (02.03.2012 в 09:38)   письмо автору
 
   для: Valick   (02.03.2012 в 09:29)
 

Всю эту кашу заварил с целью обезопасить сайт от следующего вида "атаки":

Злоумышленник заходит на сайт смотрит как происходит дествие (отправить сообщения, добавить в друзья)
Он регистрируется, узнает ID последнего зарегистрированного пользователя.

Пишет скрипт и добавляет к себе всех друзей на сайте с id = 1 по id = 998 (его id 999)
Далее пишет скрипт и рассылает всем друзьям сообщение.

Вот для чего защита нужна.

  Ответить  
 
 автор: Sfinks   (02.03.2012 в 10:23)   письмо автору
 
   для: tima2010   (02.03.2012 в 09:38)
 

ппц! Слов нет )))
А не вариант сделать подтверждение добавления пользователя в друзья самим пользователем?... Как во всех социалках.
___
Valick, нет не сталкивался. Если есть, дайте ссылочку на краткое описание этого механизма?

  Ответить  
 
 автор: tima2010   (02.03.2012 в 10:24)   письмо автору
 
   для: Sfinks   (02.03.2012 в 10:23)
 

Дело в самом выполнении запроса чтобы пользователю запретить выполнять действие слишком быстро.

  Ответить  
 
 автор: Sfinks   (02.03.2012 в 11:09)   письмо автору
 
   для: tima2010   (02.03.2012 в 10:24)
 

А какое ваше дело, я извиняюсь, сколько раз в минуту я говорю корешу, что он дурак, или любимой, что люблю, или копипастом скидываю кучу ссылок, которые он сам попросил ему скинуть, ЕСЛИ ОН РЕАЛЬНО МОЙ ДРУГ и ОН ЭТО ПОДТВЕРДИЛ!!!

  Ответить  
 
 автор: Valick   (02.03.2012 в 11:31)   письмо автору
 
   для: Sfinks   (02.03.2012 в 11:09)
 

ну на всех приличных форумах личное сообщение отправить можно не только другу ;)

  Ответить  
 
 автор: Sfinks   (02.03.2012 в 12:10)   письмо автору
 
   для: Valick   (02.03.2012 в 11:31)
 

Так а тут (через 4 поста вверх) написано именно про рассылку друзьям.

  Ответить  
 
 автор: Valick   (02.03.2012 в 10:48)   письмо автору
 
   для: Sfinks   (02.03.2012 в 10:23)
 

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

  Ответить  
 
 автор: tima2010   (02.03.2012 в 10:51)   письмо автору
 
   для: Valick   (02.03.2012 в 10:48)
 

большое спасибо! и обойти сессии не получится? :)

  Ответить  
 
 автор: Valick   (02.03.2012 в 10:58)   письмо автору
 
   для: tima2010   (02.03.2012 в 10:51)
 

нет не получиться, вы либо авторизованы и вам "всё" можно, либо не авторизованы и лупитесь на страницу авторизации, хоть 100500 раз обновляй страницу хоть в секунду хоть в год :)

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

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