Накрутка голосов или какие ошибки часто допускают при создании web голосований
Ожидает приглашения
Добрый вечер хабрасообщество. Сегодня речь пойдет о голосовании на разных сайтах и часто допускаемых ошибках при создании этих голосований.
Я расскажу свой опыт на примере сайта одного крупного ТРК моего города (ссылку дать не могу, но суть до вас донесу). Голосовать там можно с 1го IP 1 раз в сутки. Стояла задача, накрутить одному участнику определенное количество голосов. Техника проста, сайт использует передачу параметров методом GET, типа www.sitename.ru/id=id_uchastnika&act=rate. Что мы делаем? При помощи программки ProxySwitcher мы получаем примерно 8000 прокси серверов, из них около 2000 пригодных для наших нужд (в смысле работающих) и пишем простенький BAT скрипт. У меня он выглядит так
Я думаю, что он делает и так понятно, но объясню поподробней. В C:\proxylist.txt я скопировал те самые 2000 рабочих прокси серверов и вытаскиваю их построчно, а командой REG добавляю их в реестр (другого способа автоматизации не нашел, если знаете, буду признателен (netsh winhttp не предлагать)). Чтобы IE не закрывался сразу стоит задержка при помощи команды ping, где -n это секунд+1 ожидания (на Win7 можно использовать команду timeout), после чего завершаем процесс IE, таким образом наш кандидат получает голоса. Естественно что браузер можно выбрать любой, но самое главное отключить в нем все картинки, но оставить JS (почему-то в другом случае голоса не проходят), т.к. не все прокси быстрые и укладываются в 15 секунд.
После завершения работы скрипта отключаем прокси следующим образом:
Итог, нужный конкурсант набрал свои голоса и все остались довольны. Однако, вернусь к теме своего поста. Очень обидно, что различные крупные организации забывают о мелочах при создании сайта, а ведь приз по итогам голосования очень неплохой.
Итак, как же обезопасить себя от этого?
1) вместо GET использовать POST, таким образом еще и частично можно оградиться от XSS
2) при голосовании просить ввод капчи, что еще больше усложнит работу ботам
3) пусть каждый голосующий указывает свой e-mail, куда будет отправляться ссылка с подтверждением (тогда 1 пункт придется отбросить; либо же код, позволяющий проголосовать)
Вы скажете, что это все элементарно, однако на таких элементарных ошибках и получаются такие итоги. Спасибо за внимание.
P.S. естественно список прокси можно взять и не из этой программки, а взять, например, список российских прокси и т.д.
P.P.S. администрация сайта понимает, что происходит, однако действовать как-то не особо собираются.
Я расскажу свой опыт на примере сайта одного крупного ТРК моего города (ссылку дать не могу, но суть до вас донесу). Голосовать там можно с 1го IP 1 раз в сутки. Стояла задача, накрутить одному участнику определенное количество голосов. Техника проста, сайт использует передачу параметров методом GET, типа www.sitename.ru/id=id_uchastnika&act=rate. Что мы делаем? При помощи программки ProxySwitcher мы получаем примерно 8000 прокси серверов, из них около 2000 пригодных для наших нужд (в смысле работающих) и пишем простенький BAT скрипт. У меня он выглядит так
@echo off
cd C:\Program Files\Internet Explorer
If Exist C:\proxylist.txt (
For /F "Delims=" %%I In (C:\proxylist.txt) Do (
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d %%~I /f
start iexplore.exe "http://sitename.com/id=id&act=rate"
ping -n 16 127.0.0.1>NULL
taskkill /IM iexplore.exe /F
)
)
pause
Я думаю, что он делает и так понятно, но объясню поподробней. В C:\proxylist.txt я скопировал те самые 2000 рабочих прокси серверов и вытаскиваю их построчно, а командой REG добавляю их в реестр (другого способа автоматизации не нашел, если знаете, буду признателен (netsh winhttp не предлагать)). Чтобы IE не закрывался сразу стоит задержка при помощи команды ping, где -n это секунд+1 ожидания (на Win7 можно использовать команду timeout), после чего завершаем процесс IE, таким образом наш кандидат получает голоса. Естественно что браузер можно выбрать любой, но самое главное отключить в нем все картинки, но оставить JS (почему-то в другом случае голоса не проходят), т.к. не все прокси быстрые и укладываются в 15 секунд.
После завершения работы скрипта отключаем прокси следующим образом:
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
Итог, нужный конкурсант набрал свои голоса и все остались довольны. Однако, вернусь к теме своего поста. Очень обидно, что различные крупные организации забывают о мелочах при создании сайта, а ведь приз по итогам голосования очень неплохой.
Итак, как же обезопасить себя от этого?
1) вместо GET использовать POST, таким образом еще и частично можно оградиться от XSS
2) при голосовании просить ввод капчи, что еще больше усложнит работу ботам
3) пусть каждый голосующий указывает свой e-mail, куда будет отправляться ссылка с подтверждением (тогда 1 пункт придется отбросить; либо же код, позволяющий проголосовать)
Вы скажете, что это все элементарно, однако на таких элементарных ошибках и получаются такие итоги. Спасибо за внимание.
P.S. естественно список прокси можно взять и не из этой программки, а взять, например, список российских прокси и т.д.
P.P.S. администрация сайта понимает, что происходит, однако действовать как-то не особо собираются.