Сайт на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров |
Автор megabax | |||||||
26.04.2014 г. | |||||||
Разработка сервиса сайта на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеровЧто бы смотреть урок полностью, подпишитесь на платный раздел. В платном разделе статья находиться здесь. Исходники к уроку вы можете скачать в платном разделе. Сегодня мы немножко отвлечемся от модульного тестирования и займемся безопасностью. Первое, на что хочется обратить внимание, это регистрация визитов. Раз мы предусмотрели возможность, что начисление партнерского вознаграждения может быть просто за переходы, то возникает вопрос: а если кто то будет накручивать переходы при помощи робота? Вот сегодня мы как раз и займемся разработкой защиты от накрутки переходов. Но прежде чем перейти непосредственно к теме, скажу об одной важной вещи. При попытке запустить скипт ref.php, где у нас пример регистрации перехода по ссылке, у меня выпало такое сообщение:
Боролся с этим несколько часов, сломал мозги и потратил кучу нервов. Оказалось, что ... ... ... сам робот так же прилагается к исходникам. Результатом однократного запуска такого робота будет накрутка 10 посещений: Первая мысль это использовать $_SERVER['HTTP_USER_AGENT']. Давайте проверим. Делаем файл
Обзываем его как нить типа 1.php. Тестируем. При запуске скрипта из браузера выдает IE:
из 1С:
из FireFox:
Но HTTP_USER_AGENT можно подделать. Это раз. Да и непонятно может, пользователь использует какой то экзотический браузер, который мы не сможем идентифицировать. Следующая идея .... ... .... И так, начнем. Создадим таблицу _epp_sys: Это у нас будет ... ... ... Теперь файл test.php будет выглядеть компактно и красиво:
Кстати, юнит тест мне реально помог обнаружить и исправить глюк до того, как я интегрировал EP_Systable. Так что теперь можно смело переделывать метод Register класса EP_Visites, зная, что класс EP_Systable работате без глюков. .... ... ...Да, и не забудть заинклюдить systable.php в файле visites.php. И, в принципе, все, осталось только протестировать. Для этого можно воспользоваться уже написанным на 1С роботом, только поставьте там не 10, а, например 10 циклов. И вы убедитесь, что регистрировать будет только 10, а дальше включаться таймаут, при чем таймаут будет выставлен случайным образом от 10 до 100 секунд, что бы затруднить роботу работу по вычислению таймаута.
|
|||||||
Последнее обновление ( 26.04.2014 г. ) |
« След. | Пред. » |
---|