Способ обнаружения соскоба сети - PullRequest
11 голосов
/ 21 марта 2011

Мне нужно обнаружить информацию на моем сайте. Я пробовал обнаружение, основанное на моделях поведения, и это кажется многообещающим, хотя и относительно трудоемким.

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

Если быть более точным, я собираю временные интервалы между запросами в массив, проиндексированные по функции времени:

i = (integer) ln(interval + 1) / ln(N + 1) * N + 1
Y[i]++
X[i]++ for current client

где N - ограничение по времени (количеству), интервалы, превышающие N, отбрасываются. Первоначально X и Y заполнены единицами.

Затем, после того, как я наберу достаточное их количество в X и Y, пришло время принять решение. Критерием является параметр C:

C = sqrt(summ((X[i]/norm(X) - Y[i]/norm(Y))^2)/k)

где X - определенные данные клиента, Y - общие данные, а norm () - функция калибровки, а k - коэффициент нормализации, в зависимости от типа нормы (). Есть 3 типа:

  1. norm(X) = summ(X)/count(X), k = 2
  2. norm(X) = sqrt(summ(X[i]^2), k = 2
  3. norm(X) = max(X[i]), k is square root of number of non-empty elements X

C находится в диапазоне (0..1), 0 означает, что отклонения в поведении отсутствуют, а 1 - максимальное отклонение.

Калибровка типа 1 лучше всего подходит для повторяющихся запросов, типа 2 для повторяющегося запроса с несколькими интервалами, типа 3 для непостоянных интервалов запроса.

Что ты думаешь? Буду признателен, если вы попробуете это на своих услугах.

Ответы [ 4 ]

9 голосов
/ 21 марта 2011

Если честно, ваш подход совершенно бесполезен, потому что его тривиальный обход.Злоумышленнику даже не нужно писать строку кода, чтобы обойти его.Прокси-серверы бесплатны , и вы можете загрузить новую машину с новым IP-адресом на amazon ec2 за 2 цента в час.

Лучший подход - Roboo , который использует технику cookie, чтобы мешать роботам.Подавляющее большинство роботов не могут запускать javascript или flash, и это может быть использовано в ваших интересах.

Однако все это "(в) безопасность, хотя и неизвестность ", и ТОЛЬКО ПРИЧИНА , почему это может сработать, потому что ваши данные не стоят того, чтобы программист потратил на них 5 минут.(В комплекте Roboo)

3 голосов
/ 15 октября 2013

Если вы спрашиваете о правильности вашего алгоритма, это неплохо, но, похоже, вы слишком усложняете его.Вы должны использовать базовые методологии, уже используемые WAF для ограничения скорости соединений.Одним из таких алгоритмов, который уже существует, является алгоритм Leaky Bucket Algorithm (http://en.wikipedia.org/wiki/Leaky_bucket).

. Что касается ограничения скорости, чтобы прекратить очистку веб-страниц, есть два недостатка в попытке оценить ограничение соединений. Во-первых, это способность людейиспользуйте прокси-сети или TOR для анонимизации каждого запроса. Это, по сути, сводит на нет ваши усилия. Даже с нуля программное обеспечение, такое как http://www.mozenda.com, использует огромный блок IP-адресов и перемещается по ним, чтобы решить эту проблему. Другая проблема заключается в том, что выпотенциально могут блокировать людей, использующих общий IP. Компании и университеты часто используют NAT, и ваш алгоритм может ошибочно принять их за одного человека.

Для полного раскрытия, я являюсь соучредителем Distil Networks , и мыМы часто просматриваем дыры в WAF, как ограничение скорости. Мы настаиваем на том, что требуется более комплексное решение и, следовательно, на нашем сервисе.

3 голосов
/ 25 марта 2011

Я много чищу в Интернете и всегда использую несколько IP-адресов и случайные интервалы между каждым запросом.

При очистке страницы я обычно загружаю только HTML, а не зависимости (изображения, CSS и т. Д.). Таким образом, вы можете попробовать проверить, загружает ли пользователь эти зависимости.

0 голосов
/ 10 июля 2019

Хорошо, кто-то может создать робота, который будет заходить на ваш сайт, загружать html (не изображения, css и т. Д., Как в ответе @ hoju) и строить график ссылок, которые будут перемещаться на вашем сайте.

Робот может использовать случайные тайминги для выполнения каждого запроса и изменения IP-адреса в каждом из них, используя прокси, VPN, Tor и т. Д.

Мне хотелось ответить, что вы можете попытаться обмануть робота, добавив скрытые ссылки с помощью CSS (распространенное решение, найденное в Интернете). Но это не решение. Когда робот получает доступ к запрещенной ссылке, вы можете запретить доступ к этому IP. Но вы получите огромный список запрещенных IP-адресов. Кроме того, если кто-то начнет подделывать IP-адреса и делать запросы к этой ссылке на вашем сервере, вы можете оказаться в изоляции от мира. Помимо всего прочего, возможно, что будет реализовано решение, позволяющее роботу видеть скрытые ссылки.

Я думаю, что более эффективным способом было бы проверять IP-адрес каждого входящего запроса с помощью API, который обнаруживает прокси, VPN, Tor и т. Д. Я искал в Google «api Detection vpn proxy tor» и нашел некоторые ( платные) услуги. Может быть, есть бесплатные.

Если ответ API положительный, перенаправьте запрос на код проверки.

...