Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Разработка сервиса сайта на PHP на примере партнер arrow Сайт на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров
14.01.2025 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Сайт на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров Печать E-mail
Автор megabax   
26.04.2014 г.
Структура программы на примере простейшей программы

Разработка сервиса сайта на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Исходники к уроку вы можете скачать в платном разделе.

Сегодня мы немножко отвлечемся от модульного тестирования и займемся безопасностью. Первое, на что хочется обратить внимание, это регистрация визитов. Раз мы предусмотрели возможность, что начисление партнерского вознаграждения может быть просто за переходы, то возникает вопрос: а если кто то будет накручивать переходы при помощи робота? Вот сегодня мы как раз и займемся разработкой защиты от накрутки переходов. Но прежде чем перейти непосредственно к теме, скажу об одной важной вещи. При попытке запустить скипт ref.php, где у нас пример регистрации перехода по ссылке, у меня выпало такое сообщение:

Warning: Cannot modify header information - headers already sent by (output started at X:\home\localhost\www\Part\filter.php:33) in X:\home\localhost\www\Part\partners.php on line 26

Боролся с этим несколько часов, сломал мозги и потратил кучу нервов. Оказалось, что ...

...

... сам робот так же прилагается к исходникам.

Результатом однократного запуска такого робота будет накрутка 10 посещений:

Разработка сервиса сайта на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров

Первая мысль это использовать $_SERVER['HTTP_USER_AGENT']. Давайте проверим. Делаем файл

<?php

    echo "HTTP_USER_AGENT: ".$_SERVER['HTTP_USER_AGENT'];

?>

Обзываем его как нить типа 1.php. Тестируем. При запуске скрипта из браузера выдает IE:

HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRSPUTNIK 2, 4, 0, 271; MRA 8.0 (build 5977); InfoPath.1; WebMoney Advisor; .NET4.0C; .NET4.0E)

из 1С:

HTTP_USER_AGENT: 1C+Enterprise/8.2

из FireFox:

HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1

Но HTTP_USER_AGENT можно подделать. Это раз. Да и непонятно может, пользователь использует какой то экзотический браузер, который мы не сможем идентифицировать. Следующая идея ....

...

.... И так, начнем. Создадим таблицу _epp_sys:

Разработка сервиса сайта на PHP на примере партнерской программы. Урок 22. Защитим регистрацию визитов от хакеров

Это у нас будет ...

...

... Теперь файл test.php будет выглядеть компактно и красиво:

<?php

    include_once("EP_Unit_Test.php");

    include_once("ini.php");

    include_once("ppdb.php");

    include_once("Part/customers.php");

    include_once("Part/fees.php");

    include_once("Part/systable.php");

    include_once("testlib.php");

 

    $db=new EP_DBService();

    $db->HostName=DB_HOST;

    $db->UserName=DB_USER;

    $db->Password=DB_PASSWORD;

    $db->DBName=DB_NAME;

    $db->Prefix="_epp_";

   

    $test=new EP_Unit_Test(array("customers", "fees", "sys"),$db);

   

    //начинаем тест

    $test->begin();

   

    testEP_Customers($db, $test); //тестируем EP_Customers

    testEP_Fees($db, $test); //тестируем EP_Fees

    testEP_Systable($db, $test); //тестируем EP_Systable

   

 

    $test->end();

?>

Кстати, юнит тест мне реально помог обнаружить и исправить глюк до того, как я интегрировал EP_Systable. Так что теперь можно смело переделывать метод Register класса EP_Visites, зная, что класс EP_Systable работате без глюков. ....

...

...Да, и не забудть заинклюдить systable.php в файле visites.php. И, в принципе, все, осталось только протестировать. Для этого можно воспользоваться уже написанным на 1С роботом, только поставьте там не 10, а, например 10 циклов. И вы убедитесь, что регистрировать будет только 10, а дальше включаться таймаут, при чем таймаут будет выставлен случайным образом от 10 до 100 секунд, что бы затруднить роботу работу по вычислению таймаута.

 

 

Последнее обновление ( 26.04.2014 г. )
 
« След.   Пред. »
 
© 2025 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги