Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Защита скрипта от несанкционированного вызова [2]
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
дополню
писать в скрытые поля этим js следует значение привязаное к ip(например md5(IP))
иначе по трафику отследят нужное значение
а так для машины злохакера оно будет одним(всегда!) а для других всех будет отличаться
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Мелкий пишет:
Простейший случай:
0) создаёте скрытое поле формы, обязательно с не говорящим названием, какой-нибудь time, например
1) на стороне php пишете туда чего-нибудь, для достоверности. Придерживаясь названия - текущий timestamp
2) вставляете на страницу JS, который при открытии страницы заменит содержимое поля на другое значение. И сохраняете желаемое значение в сессию
3) в скрипте голосования проверяете, совпадает ли пришедшее значение с сохранённым в сессию
Потом усложняете, высчитываете какой-нибудь логарифм или ещё чего.
С JS я совсем мало знаком, но попробую разобраться.
А при просмотре кода страницы JS разве не просматривается? Или можно подключить функцию из внешнего файла?
В общем, попробую. Большое спасибо!
LIME
Отправлено: 21 Мая, 2012 - 14:56:50
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
думаю надо пояснить
заметив одно постоянное значение хакер его пропишет в робота
и подменив ip(прокси) значение поля может не сменить
соответственно будем знать кто пришел))
_tvlad
Отправлено: 21 Мая, 2012 - 15:07:43
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
дополню
писать в скрытые поля этим js следует значение привязаное к ip(например md5(IP))
иначе по трафику отследят нужное значение
а так для машины злохакера оно будет одним(всегда!) а для других всех будет отличаться
Дело осложняется тем, что у него не постоянный IP, а динамический. Был бы постоянный, я бы его тупо запретил. Он заходит от двух разных провайдеров и в каждом случае - динамически назаначаемые адреса.
Мелкий
Отправлено: 21 Мая, 2012 - 15:18:32
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Таймштамповая мысль - человеческий глаз далеко не сразу осознаёт разницу между парой таймштампов, их читать неудобно.
Поэтому мы можем в поле писать время старта, на стороне JS как-нибудь хитро вычислить небольшое число, прибавить это число к таймштампу и проверять в обработчике, что таймштамп должен быть не вставленный в поле, а новый (+ совпадать с тем, что сохранён в сессии как нужный после преобразования).
Так будет видимость всё тех же значений и заметить подвох при анализе запроса - не просто.
_tvlad пишет:
А при просмотре кода страницы JS разве не просматривается?
Отлично просматривается. И все подгружаемые файлы - тоже. И аяксовые. Всё, что видно юзеру - ему доступно.
И потому эта гонка вооружений нескончаема. То, что на той стороне человек, а не робот - достоверно не выяснить.
----- PostgreSQL DBA
_tvlad
Отправлено: 21 Мая, 2012 - 16:09:52
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Мелкий пишет:
Поэтому мы можем в поле писать время старта, на стороне JS как-нибудь хитро вычислить небольшое число, прибавить это число к таймштампу и проверять в обработчике, что таймштамп должен быть не вставленный в поле, а новый (+ совпадать с тем, что сохранён в сессии как нужный после преобразования).
Что-то я слегка путаюсь. Значит, так:
1. При открытии страницы голосования я пишу в сессию время открытия. В обработчике фиксирую время голосования и сравниваю со временем открытия сессии. Если меньше секунды - робот. Это вроде ясно.
2. То же время открытия сессии, но в виде таймштампа, я пишу в скрытое поле формы. Затем с помощью процедуры JS изменяю это значение. По нажатию кнопки оно уходит в POST к обработчику. Как обработчик может его проверить? Ему нужно выполнить точно такие же вычисления, как и те, что были выполнены на JS, с сессионной переменной, которая содержит время открытия сессии (тогда имеет смысл и это значение сохранять в виде таймстампа).
Я всё правильно понял?
3. Привязка к IP. В еще одно скрытое поле я пишу зашифрованное значение IP... Дальше я не понимаю. У хакера IP меняется, при каждом подключении он будет видеть разные значения в этом поле и вряд ли станет зашивать туда фиксированную строку. Или как?
LIME
Отправлено: 21 Мая, 2012 - 16:20:58
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
3. Формируя алгоритм хакер наблюдает в скрытом поле строку
можно ее назвать правдоподобно например theme='14556879' (на самом деле формируется из IP)
причем она будет для него постоянна пока он не сменит ip
есть вероятность что он зашьет это значение в робот без парсинга поля
тогда робот с других ип будет слать некорректные значения
Мелкий
Отправлено: 21 Мая, 2012 - 16:24:30
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
_tvlad пишет:
Я всё правильно понял?
Да, верно.
----- PostgreSQL DBA
LIME
Отправлено: 21 Мая, 2012 - 16:27:33
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
_tvlad пишет:
Если меньше секунды - робот
лучше посмотреть по логам с какой частотой сейчас обращается
анонимные прокси довольно медленные
лучше побольше
скажем 5 сек (Добавление)
2. алгоритмы изменения поля можно делать разными
и в ту же сессию писать идентификатор алгоритма
Zuldek
Отправлено: 21 Мая, 2012 - 16:34:25
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Ещё, конечно, можно посмотреть с каких ипов голосует потенциальный бот. Если это анонимные прокси то их можно пробивать по открытым спискам, откуда их все и берут и сразу банить при запросе голосовалки.
Еще можно реализовать такую штуку, как задержка работы скрипта.
Принцип такой, что тык голосовалки можно только через N секунд после загрузки страницы. Причем N определяется случайным образом от 1 до 5-6 секунд (выбирается время приемлемое для конкретного приложения). если задержка больше секунды можно простенькое анимэ кнопки добавить или action-bar окончания временного порога, после которого голосование доступно становится.
_tvlad
Отправлено: 21 Мая, 2012 - 16:36:12
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
3. Формируя алгоритм хакер наблюдает в скрытом поле строку
можно ее назвать правдоподобно например theme='14556879' (на самом деле формируется из IP)
причем она будет для него постоянна пока он не сменит ip
есть вероятность что он зашьет это значение в робот без парсинга поля
тогда робот с других ип будет слать некорректные значения
Понял. Постараюсь реализовать все пункты. Через некоторое время отчитаюсь.
В любом случае, все голоса у меня регистрируются по времени и IP, и есть уже несложный алгоритм, выкидывающий оттуда все накрутки. В конце акции придется его применить, но это, конечно, довольно не солидно, придется ковырять стол и оправдываться перед честными пользователями.
LIME
Отправлено: 21 Мая, 2012 - 16:37:52
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Zuldek пишет:
или action-bar окончания временного порога,
ни в коем случае
так становится понятно что задержка отслеживается
и в принципе это вариация уже предложенного но на стороне клиента
а значит палимся
_tvlad
Отправлено: 21 Мая, 2012 - 16:40:11
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
_tvlad пишет:
Если меньше секунды - робот
лучше посмотреть по логам с какой частотой сейчас обращается
анонимные прокси довольно медленные
лучше побольше
скажем 5 сек (Добавление)
2. алгоритмы изменения поля можно делать разными
и в ту же сессию писать идентификатор алгоритма
Такая серия голосований идет с частотой до пяти раз в секунду.
Про алгоритмы - хорошая идея, спасибо.
LIME
Отправлено: 21 Мая, 2012 - 16:40:28
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Zuldek пишет:
Если это анонимные прокси то их можно пробивать по открытым спискам, откуда их все и берут и сразу банить при запросе голосовалки
хорошо бы
_tvlad
Отправлено: 21 Мая, 2012 - 16:52:25
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
Zuldek пишет:
Если это анонимные прокси то их можно пробивать по открытым спискам, откуда их все и берут и сразу банить при запросе голосовалки
хорошо бы
Я пока не знаю, что такое анонимные прокси. Его IP находятся в двух пулах адресов двух популярных у нас провайдеров.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.