webew
Войти » Регистрация
 
PHP :: безопасность

Спам

21 марта 2009, 8:31
Автор: Serg_pnz
Начали спамить, используя возможность Firebug. Почему подозрение на эту программу? Потому что спамят в новость с id=0, т.е. которой нет.
Что бы можно было выставить в ответ? Или смириться? Ручной спам, он по-моему непобедим...

Кстати примитивная защита реализована

if (isset($_POST['comment']) OR isset($_POST['random_num'])) {
$ref=explode ("//", $_SERVER['HTTP_REFERER']);
$ref=explode ("/", $ref[1]);
if (!preg_match("/(.*?)ponedelnikov.net/",$ref[0])) {die ("gbcz!");}
}
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
NO USERPIC

rgbeast

Подобным способом мы обычно и боремся. Все зависит от того насколько упорные спаммеры. Если упорные, придется дольше думать.
21.03.2009, 11:02
Ответить
NO USERPIC

billgates

Лично я проверяю на существование записи новости перед тем как оставят комент.

if (mysql_result(mysql_query('SELECT count(*) FROM news WHERE news_id='.(int)$_GET['id']),0))
{
print 'Новость существует...';
} else print 'Вы спамер!';
20.10.2010, 15:24
Ответить

1234ru

Serg_pnz, Referer можно подделать.

billgates, зачем COUNT(*)?

$sql = "
    SELECT 1
    FROM news
    WHERE news_id = "
.intval($_GET['id'])."
    LIMIT 1
    "
;
if (mysql_getcell($sql)) print 'Новость существует';
else 'Вы спамер!';

Что такое mysql_getcell
То, что не убивает нас, делает нас инвалидами.
20.10.2010, 22:06
Ответить
NO USERPIC

rgbeast

> Referer можно подделать.

Тут суть в том, что борьба идет не со спамом вообще, а с конкретной спаммерской автоматикой. Например, webew попала в базу спам-каталогов и тупые роботы начинают регистрировать у нас юзеров и постят комменты. Даже регулярное быстрое модерирование спама их не остановит - сайт может быть в базе еще годы после последнего успешного спама. Но можно вычислить какое-то свойство спама и забанить по данному свойству. Ради webew переписывать робота не будут (если будут, то тут потребуется совсем другой уровень защиты, как, например у Яндекса).

То же относится к DOS-атакам. Защититься от них в общем виде крайне сложно, но блокировать конкретную атаку бывает возможно.
20.10.2010, 22:37
Ответить
NO USERPIC

billgates

rgbeast, Можно сделать ограничение по айпи адресу на регистрацию или комменты. К примеру в час не более 5 регистраций/комментов.
Иногда боты имеют подсеть (или динамический айпи в подсети) а не 1 айпи, поэтому можно защититься от под сети. К примеру сделать в таблице комментов поле "podset" int(11). Записывать адреса с помощью функции которую я придумал для таких случаев:

//Для конветрации айпи подсети в числовое значение
//Результат ф-ции T_IP для айпи адреса 28.25.101 будет 28025101. Функция F_IP делает обратное T_IP
function T_IP($ip)
{
$ip = explode('.',$ip);

unset($ip[3]);

if ($ip[2]<10) $ip[2] = '00'.$ip[2];
    elseif($ip[2]<100) $ip[2] = '0'.$ip[2];

if ($ip[1]<10) $ip[1] = '00'.$ip[1];
    elseif($ip[1]<100) $ip[1] = '0'.$ip[1];

$ip = implode('',$ip);

return $ip;
}

//Для конвертации числа обратно в значение подсети
function F_IP($ip)
{
return (int)substr($ip, -($s = strlen($ip)),($s-6)).'.'.(int)substr($ip, -6,3).'.'.(int)substr($ip, -3);
}


Таким образом можно узнать с какой подсети сколько добавлено комментов за какое время. P.S. нужно не забыть добавить поле "time" int(11) в формате UNIX_TIMESTAMP. В UNIXTIMESTAMP легче оперировать чем с DATETIME.

>>То же относится к DOS-атакам.
Тут уже лучше железом ддос убирать. Если ddos не сильный, можно и програмно с помощью фаервола и знаний;)

1234ru, Спасибо, отличный вариант! Буду знать;)
20.10.2010, 23:38
Ответить
NO USERPIC

rgbeast

billgates, в MySQL есть встроенная функция, аналогичная вашей: INET_ATON и обратная ей INET_NTOA. Если взять целую часть от деления на 256, то получится подсеть класса C.

Кроме того, бывает удобно использовать базу данных городов по IP: http://www.maxmind.com/app/city
21.10.2010, 00:52
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2024 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: