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

Форум PHP

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

 

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

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

тема: Как перекрыть pingbacks?
 
 автор: Giga   (24.04.2008 в 23:21)   письмо автору
 
 

pingbacks - есть такая фигня если сервер на запрос не ответил, например по причине большой очереди load average или проблем у интернет-провайдера (Ну очень заментно например на gprs вечерами), этот запрос вновь отправляется серверу. В обычном понимании это флуд например, когда если нет фильтра, то вот это мое сообщение добавит сюда, при моем или сервера зависании несколько раз. Фильтр на наличие этого сообщения в форуме решил чисто эстетическую задачу - а именно добавит только одно сообщение! Но! Сам то фильтр будет задействован по ситуации 2,3,4 ... до непонятных обьемов, связанных с количеством этих запросов! В итоге этот load average вырастает в обьеме еще больше, получается маленький непроизвольный DDOS со стороны юзера.
Если дело касается десятка юзеров онлайн то на это можно закрыть глаза, рано или поздно он получит ответ на свой запрос и загрузит свою запрошенную страничку.
Но если онлайн вечером сидят 200-300 человек и добрая часть из них долбит сервер этими повторными запросами ... Это уже проблема!
Вопрос наконец! =) Как перекрыть возможными функциями php или может на сервер что поставить для отсекания этих множественных повторных запросов?
Извенение перед модератором! Незнаю куда даже определить эту тему по смыслу! Тут и мне помогут советы по PHP, MySQL, Apache ...

   
 
 автор: Atheist   (24.04.2008 в 23:28)   письмо автору
 
   для: Giga   (24.04.2008 в 23:21)
 

> Но! Сам то фильтр будет задействован по ситуации 2,3,4 ... до непонятных обьемов, связанных с количеством этих запросов! В итоге этот load average вырастает в обьеме еще больше, получается маленький непроизвольный DDOS со стороны юзера.

По твоему мнению с каждым новом запросом ты больше и больше гробишь сервер?

   
 
 автор: Giga   (24.04.2008 в 23:38)   письмо автору
 
   для: Atheist   (24.04.2008 в 23:28)
 

if(mysql_num_rows(mysql_query("SELECT id FROM forum WHERE tema='$tema'"))>0) {echo 'ФЛУД';}

---- Это простенькая функция антифлуда тем не менее скушает пускай десятую или сотую долю процессора и памяти. А если таких запросов сотни ... Это уже целые процентики ... И это уже рост load average!

   
 
 автор: Atheist   (24.04.2008 в 23:49)   письмо автору
 
   для: Giga   (24.04.2008 в 23:38)
 

Во-первых, антифлуд плохой. Лучше записывать данные в сессию с CRC32 названия темы или что еще у тебя там, и сверять: во всяком случае ты определишь повторно отправленные данные по случайности. И никаких SQL-запросов.
Еще почему-то у тебя не может существовать двух тем с одинаковым названием.
Надо позаботиться о том, чтобы при обычной ситуации твой скрипт не трещал, уж куда там до DDoS.

Во-вторых, ты предлагаешь найти решение головной боли под названием DDoS. Это уже серьёзный вопрос, который на уровне PHP лучше не решать. Оптимизировать код - да, но защищаться от атак - тут уже не то "оружие".
Это делать лучше вообще на уровне железа - как Cisco. Больше ничего путного не скажу.

[поправлено модератором]

   
 
 автор: Giga   (25.04.2008 в 00:36)   письмо автору
 
   для: Atheist   (24.04.2008 в 23:49)
 

Чтобы сделать запрос еще хуже? Все эти спамы будут зарегистрированы и включены в файловую систему сервера, сессии в воздухе не рождаются и не живут. Таким образом, каждый дополнительный кусок спама сервер обработает и запишет, и будет брать немного системных ресурсов сервера, доля CPU и памяти, так и непосредственно в результате чего сервер для подлинного процесса аутентификации HTTP-запроса в интернете сработает еще медленнее. Следовательно, сайты и веб-страницы что размещаются на сервере будут загружатся более медленно, особенно на сервер с блогами, которые постоянно затоплены со спамом комментарии. Или чат крупный с толпой в несколько сотен человек! Или онлайн игра!
А пример ...

if(mysql_num_rows(mysql_query("SELECT id FROM forum WHERE tema='$tema'"))>0) {echo 'ФЛУД';}

На то он и пример! Это может быть что угодно! Вот вам еще пример ...

if(mysql_num_rows(mysql_query("SELECT id FROM chat WHERE post='$post' AND online<'".(time()-3)." AND avtor='$avtor''"))>0) {echo 'ФЛУД';}

И совсем меня ужаснуло И никаких SQL-запросов. А данные что в файлы записывать и оттуда вытаскивать строки для сверки??? Эта комбинация скушает еще больше ресурсов!
Оптимизировать код - да - стараюсь как могу =) И поэтому написал эту тему, ищу все возможные пути и варианты для выжимания производительности! Резонно конечно решить все проблемы сменой конфигурации сервера на более мощную. Но я так подумал - это не решение проблем а уход от них =) И если даже поменять сервер на более мощный, как ты говориш там Cisco или Dell, HP и даже если собрать кластер из всех Brandname в мире, это не решение проблем а уход от них =)

   
 
 автор: Atheist   (26.04.2008 в 21:35)   письмо автору
 
   для: Giga   (25.04.2008 в 00:36)
 

> Чтобы сделать запрос еще хуже?
Это ты про CRC32? Сравни скорость вычисления CRC32 и записи в сессию с твоим запросом, чтобы не быть голословным.

> процесса аутентификации HTTP-запроса
Кто это аутентифицирует HTTP-запрос?

> И совсем меня ужаснуло И никаких SQL-запросов.
> А данные что в файлы записывать и оттуда вытаскивать строки для сверки??? Эта комбинация скушает еще больше ресурсов!
Голословное заявление: твои данные и так хранятся в файлах, только это делает СУБД - мощный механизм. Записать 4 байта (32 два бита - отсюда и 32 в названии CRC32) в сессию - плевое дело.

> И поэтому написал эту тему, ищу все возможные пути и варианты для выжимания производительности!
По-моему, ты пришёл устроить полемику.

Обоснуй, пожалуйста, все свои заявления.

   
Rambler's Top100
вверх

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