|
|
|
| Привет!
На сайте пользователям разрешено писать личные сообщения. Запись происходит в БД mysql.
В защиту от спама рассматриваю вариант защиты при помощи COOKIES
К примеру происходит действие записи и пользователю присваиваем cookies перед этим проверяем если печенка существует выводим ошибку иначе записываем.
<?php
if(isset($_POST['add'])) {
if(isset($_COOKIE['check'])) {
return 'Не спамить! Не чаще 2 секунд';
} else {
/* Запись в базу ... */
setcookie ("check", "1", time() + 2);
}
}
?>
|
Эффективен ли такой способ? Легко ли его обойти или что использовать лучше?
Спасибо!. | |
|
|
|
|
|
|
|
для: tima2010
(01.03.2012 в 22:20)
| | Да, довольно легко обходится, более того работает только против людей... роботы (а 99% спама от них) просто не будут устанавливать cookie. Лучше защиты при помощи capture нет. Ну или вообще запретить использовать ссылки в сообщениях. Без возможности оставлять ссылки на сайте вы спамерам не интересны. | |
|
|
|
|
|
|
|
для: cheops
(01.03.2012 в 22:33)
| | >> Лучше защиты при помощи capture нет
простите, что такое capture
Допустим я рассчитываю только на людей, хотя бы против них :)
Каким образом можно обойти не считая отключения cookie и капчи? Или лучше использовать другой метод? | |
|
|
|
|
|
|
|
для: tima2010
(01.03.2012 в 22:40)
| | > Допустим я рассчитываю только на людей, хотя бы против них :)
> Каким образом можно обойти не считая отключения cookie и капчи?
Защита от честных людей, я бы сказал. А в чем смысл?
> простите, что такое capture
http://www.captcha.ru/ | |
|
|
|
|
|
|
|
для: Sfinks
(02.03.2012 в 01:02)
| | отсечение ботов происходит при регистрации
все сообщения не пригодны для спам ботов
хочется сделать что то типа защиты от флуда для "честных умных людей".
Каждый раз просить вводить проверочный код при отправке сообщения по мне так это слишком. Если отправил больше 2-3 сообщений за короткий период, тогда да можно показать капчу.
Но каким способом лучше определить, что посетитель начал флудить?
Для меня важен сам подход решения задачи. Если Cookie не надежны то как лучше?
спасибо. | |
|
|
|
|
|
|
|
для: tima2010
(02.03.2012 в 08:40)
| | Но каким способом лучше определить, что посетитель начал флудить?
а вы думаете модераторов просто так придумали?
я не понимаю что вы там собрались хранить в куках и как вы с помощью этого собрались ловить флудерастов, но тук же самую информацию можно хранить на сервере в базе данных
что во всех отношениях гораздо правильнее чем куки
ну а переодичность сообщений проверяется очень просто, вы же регистрируете время записи сообщения, вот от него и плясать прошло 2 секунды или нет и выдумывать ничего не надо
естественно все это имеет смысл для зарегистрированных пользователей | |
|
|
|
|
|
|
|
для: Valick
(02.03.2012 в 09:00)
| | Модераторы для личных сообщений, не слышал.
Создается временная кука которая живет 2 сек. если она существует показываем пользователю что нельзя выполнять действие так быстро.
Запросами в бд это не слишком нагрузочное действие ? | |
|
|
|
|
|
|
|
для: tima2010
(02.03.2012 в 09:03)
| | Тогда в сессии храните время последнего сообщения, раз зарегистрированные. | |
|
|
|
|
|
|
|
для: Sfinks
(02.03.2012 в 09:11)
| | зачем? можно подумать сессии панацея и не грузят сервер и не хавают память :)
я не понимаю почему автор привязался к 2-м секундам, это все таки не чат
для личных сообщений и 20 секунд будет нормой, и уж сделать селект перед инсертом ну никак не создаст зверской нагрузки на сервер mysql
___
в конце концов сессии - это файл, БД - это тоже файл :)
кстати не сталкивались с переопределением механизма сессий, когда используют БД и один из нюансов это избавление от механизма сериализации, как думаете почему?)) | |
|
|
|
|
|
|
|
для: Valick
(02.03.2012 в 09:29)
| | Всю эту кашу заварил с целью обезопасить сайт от следующего вида "атаки":
Злоумышленник заходит на сайт смотрит как происходит дествие (отправить сообщения, добавить в друзья)
Он регистрируется, узнает ID последнего зарегистрированного пользователя.
Пишет скрипт и добавляет к себе всех друзей на сайте с id = 1 по id = 998 (его id 999)
Далее пишет скрипт и рассылает всем друзьям сообщение.
Вот для чего защита нужна. | |
|
|
|
|
|
|
|
для: tima2010
(02.03.2012 в 09:38)
| | ппц! Слов нет )))
А не вариант сделать подтверждение добавления пользователя в друзья самим пользователем?... Как во всех социалках.
___
Valick, нет не сталкивался. Если есть, дайте ссылочку на краткое описание этого механизма? | |
|
|
|
|
|
|
|
для: Sfinks
(02.03.2012 в 10:23)
| | Дело в самом выполнении запроса чтобы пользователю запретить выполнять действие слишком быстро. | |
|
|
|
|
|
|
|
для: tima2010
(02.03.2012 в 10:24)
| | А какое ваше дело, я извиняюсь, сколько раз в минуту я говорю корешу, что он дурак, или любимой, что люблю, или копипастом скидываю кучу ссылок, которые он сам попросил ему скинуть, ЕСЛИ ОН РЕАЛЬНО МОЙ ДРУГ и ОН ЭТО ПОДТВЕРДИЛ!!! | |
|
|
|
|
|
|
|
для: Sfinks
(02.03.2012 в 11:09)
| | ну на всех приличных форумах личное сообщение отправить можно не только другу ;) | |
|
|
|
|
|
|
|
для: Valick
(02.03.2012 в 11:31)
| | Так а тут (через 4 поста вверх) написано именно про рассылку друзьям. | |
|
|
|
|
|
|
|
для: Sfinks
(02.03.2012 в 10:23)
| | ссылку сходу не дам, я про это в книге читал
вот тут про эту книгу упоминали
копать нужно в сторону session_set_save_handler
___
я вовсе не против сессий, на сессию можно и нужно завязать само обновление страницы и тогда не только сообщения отослать нельзя, а вообще ничего сделать нельзя | |
|
|
|
|
|
|
|
для: Valick
(02.03.2012 в 10:48)
| | большое спасибо! и обойти сессии не получится? :) | |
|
|
|
|
|
|
|
для: tima2010
(02.03.2012 в 10:51)
| | нет не получиться, вы либо авторизованы и вам "всё" можно, либо не авторизованы и лупитесь на страницу авторизации, хоть 100500 раз обновляй страницу хоть в секунду хоть в год :) | |
|
|
|