Фрилансеры предложат решение вашей задачи уже через несколько минут!
Публикация заказа не займет много времени.
10 месяцев назад
Андрей Хлывнюк
30 лет, Россия
10 месяцев в сервисе
Был онлайн 10 месяцев назад
10 месяцев назад

Задача: Загадать определенную картинку, записать в базу данных. Показать загаданную картинку на одном сайте. Разгадать загаданную картинку на другом сайте. Защита сценария от взлома и искусственной накрутки.

Во всем сценарии участвуют 3 сайтах, размещенных на разных серверах.

Сайт № 1: На нем находится база данных MySQL, а также PHP-скрипт взаимодействия с базой данных.
Сайт № 2: Этот сайт подключается к сайту № 1 через cURL, читает загаданную картинку с базы данных и выводит ее для показа.
Сайт № 3: На этом сайте через JavaScript рандомно показываются 5 картинок. Среди них есть и загаданная. Задача посетителя кликнуть по загаданной картинке, чтобы ее угадать.

Теперь подробнее о пошаговом сценарии:

01. В базе данных заранее уже определена загаданная картинка, которая имеет значения от 1 до 5. Например поле "image" со значением "2".

02. На сайте № 2 идет подключение к сайту № 1 посредством cURL на скрипт image.php. Тот возвращает значение загаданной картинки "2". У каждой картинки свой номер, который соответствует загаданной картинке. Например: 1.png, 2.png, 3.png, 4.png, 5.png.  Также сайт № 2 через Ajax каждые 5 секунд подключается к сайту № 1, чтобы прочитать значение загаданной картинки с базы данных. И меняет ее, если значение в таблице базы данных изменилось.

03. На сайте № 3 через JavaScript рандомно var x = Math.floor((Math.random() * 5) + 1); определяется случайным образом картинка и показывается через document.getElementById("changeimg").innerHTML = '<img src...
var myVar = setInterval(function(){ randtoys() }, 3000);

У картинки стоит событие onclick="onSubmit('+x+');" На функцию onSubmit() я также повесил Google Recaptcha, которая вместе с выбранной картинкой отправляет запрос через Ajax на PHP скрипт check.php, который находится на этом же сайте № 3. В этом скрипте проверяется Google Recaptcha, если все ок, идет запрос через cURL на сайт № 1 базы данных к PHP-скрипту image.php?check=1&num=X (где num=X - это выбранная картинка посетителем).

04. Далее на сайте № 1 присланное значение "num" сравнивается со значением с базой данных. Если совпадает = успешно, если не совпадает, возвращает ошибку.

Собственно это и весь сценарий. Проблема в том, что злоумышленники нашли дырку и как-то обходят внутреннюю защиту через прямые запросы на файлы скриптов, минуя сценарий проверки. То есть, они как-то узнали адрес скрипта, который подключается к сайту № 1 базы данных и минуют проверку Google Recaptcha на сайте № 3.

Узнал я это таким образом: Каждый раз, когда игрушка успешно угадывается, в скрипте на сайте базы данных в таблице MySQL меняется значение общего числа угаданных картинок. Также в этом скрипт фиксируется общее количество запросов к скрипту в отдельную таблицу. В общем число успешно угаданных не меняется, а количество фиксируемых запросов на успешные угадывания фиксируются. Если все выполнять по сценарию, без взлома и обхода защиты, общее число успешно угаданных картинок меняется.

Как защитить этот сценарий от попытки взлома или обхода защиты? Как заставить посетителя обязательно отправить запрос именно с браузера сайта № 3, именно с конкретно определенной страницы, именно кликая на картинку, чтобы обязательно при клике на загаданную картинку прошел проверку Google Recaptcha и запрос отправился с сайта № 3 на сайт № 1 базы данных с выбранным значением картинки?

На сайте № 3, когда посетитель открывает любую страницу, я записываю зашифрованный ключ в cookie. Также этот ключ в зашифрованном виде записываются в session. Перед отправкой параметров на сайт № 1, читается значение ключа с cookie, сравнивается со значением session. Конечно, это бесполезно, если cookie также успешно записывается без обязательного открытия сайта № 3 в браузере. Тогда я не знаю как еще сделать защиту, чтобы вынудить отправлять запросы только с открытого браузера, чтобы нельзя было напрямую отправить запрос на PHP-скрипт.

Есть практические идеи как и где защитить запросы? Или вообще решение такой задачи? Я любитель в PHP. Можно просто из-за отсутствия знаний не могу сообразить как защитить такой сценарий.

Заявки фрилансеров

10 месяцев назад
Хорен Баласанян
26 лет, Армения
2 года в сервисе
Был онлайн 19 дней назад
10 месяцев назад
Павел Угодин
32 года, Россия
10 месяцев в сервисе
Был онлайн 9 месяцев назад
10 месяцев назад
Леонид Рыбаков
49 лет, Россия
6 лет в сервисе
Был онлайн 8 месяцев назад
10 месяцев назад
Владимир Бугорков
28 лет, Россия
1 год в сервисе
Был онлайн 1 месяц назад

Похожие заказы

PHP -программист - менеджер проекта

IT-компании, занимающейся разработкой WEB-порталов и WEB-приложений, на постоянную работу требуется PHP-программист на позицию менеджера проекта. Требования к кандидату: - умение управлять проектами и группами разработчиков (3-8 человек) - PHP, MySQL

PHP -программист

IT-компании, занимающейся разработкой WEB порталов, в связи с расширением штата сотрудников на постоянную работу требуются PHP -программисты. Требования к кандидату: - законченное высшее образование - PHP, MySQL на высоком уровне, опыт работы от 2 ле

Надо написать на php + mySQL каталог сайтов и небольшая админка

Надо написать на php + mySQL каталог сайтов и небольшая админка для этого каталога (интегрировать в дизайн сайта и устанавливать на сервере будет другой чел). 1. каталог сайта с линками с возможностью добавлять и удалять разделы 1.1 Глубина 3 - Ос

Скрипт на php

Скрипт на php - размещение ссылок и банеров

Движок on-line игры

Задание. Разработать движок на PHP/MySQL on-line игры в ШАШКИ для двух пользователей. На входе скрипт получает переменные: PING - код игры UID - код игрока MOVE - ход, выраженный в виде c3-b4. На выходе должен формироваться двухмерный массив

Флеш игры

бюджет серьёзный (порядка 2Кб) заказчик западный нужен опытный разработчик с портфелем флеш игр, и со ссылками на работы, в которых есть интеграция флеш с ДБ (любой SQL). приват.

Требуеться флешер для создания азартных флеш игр

требуеться флешер с хорошим знанием action script и php для создания игр и переработки существующих серьезный человек другие знания и хорошее портфолио приветствуються

PHP-программист на постоянную работу (свободный график, работаете дома, в р

Требуется программист PHP + MySQL. Желательно дополнительно знание Flash, возможно Delphi (если не знаете, не страшно). Работа на дому. Требование: Мне необходимо, чтобы Вы жили в Санкт-Петербурге. Я буду постоянно присылать по интернету задания на

PHP - PDF Conversion

1. Go to http://www.creativityandmagic.com/aspcaseload/startpage.asp. Then click "View All Active" Patients. Then click the patient "Robert James". 2. The two bottom rows of information need to be fixed: a. The first section is th...

PHP (маштабирование картинки и наложение лого)

PHP (маштабирование картинки и наложение лого)