Первый сайт 1. Когда редактирую страницу, нажимаю на "визуально", не переходит, только в режиме "текст" 2. галлерея, тоже не открывается, (скрин во вложении) 3. Галлерея ( на скрине) , нужно сделать так ...
Игра по угадыванию загаданной картинки на PHP
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Задача: Загадать определенную картинку, записать в базу данных. Показать загаданную картинку на одном сайте. Разгадать загаданную картинку на другом сайте. Защита сценария от взлома и искусственной накрутки.
Во всем сценарии участвуют 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 = '
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. Можно просто из-за отсутствия знаний не могу сообразить как защитить такой сценарий.
Заявки фрилансеров
Похожие заказы
- Веб-программирование5 заявокЗакрыт7 лет назад
Нужно прикрутить к интернет магазину эквайринг. Кто готов приступить сейчас?
Веб-программирование1 исполнительЗавершен7 лет назадНеобходимо сделать так, чтобы можно было видеть карту Google Map без надписей или насколько возможно без надписей. Как это будет реализовано, в виде плагина, или мини сайта или еще как не важно, важно чтобы можно ...
Веб-программирование1 исполнительЗавершен7 лет назад- $7
Есть таблица в БД (postgre) с данными типа: edrc_btc;0.00001451;3247.09322669 edrc_doge;4.10000015;0.00000000 edrc_eth;0.00069994;0.00000000 edrc_rur;4.77777777;0.00000000 edrc_usd;0.12100002;0.00000000 edrc_waves;0.02064999;0.34039703 eet_btc;0.00089176;107.09796686 eet_doge;1200.61900059;3.34885975 eet_eth;0.00912545;21869.18798709 eet_rur;688.98388000;10.09238895 eet_usd;11.15000000;43.68163861 eet_waves;0.79766320;0.00000000 ...
Веб-программирование4 заявкиЗакрыт7 лет назад Необходимо поправить скрипт корзины в лендинге, а собственно, не доходят на почту заявки отправленные с корзины.. все подробности исполнителю.
Веб-программирование1 исполнительЗавершен7 лет назадПолный перенос сайта с друпал на вордпресс с переносом некторых урл, с сохранением функиональности. сайт – ihelp.moscow/ Пишите Ваши координаты Бюджет не большой.
Веб-программирование5 заявокЗакрыт7 лет назадЗдравствуйте. Необходимо сделать копию landing page с небольшими доработками и изменениями. Вот сайт https://mymeizu.ru/ Нужно сделать копию, там при нажатии конки купить/заказать, идет переадресация на другой ресурс. В нашем ...
Веб-программирование3 заявкиЗакрыт7 лет назад- $80
Нужно поправить мобильную верстку сайта согласно макетам срочно! верстка direction RTL + поправить десктоп обязательно нужно рабираться в ВП
Веб-программирование10 заявокЗакрыт7 лет назад Нужно скрыть возможность использование купонов для определенной группы клиентов в opencart 2
Веб-программирование1 исполнительЗавершен7 лет назадЕсть форум с русскоязычной веткой, раздел "разное" https://bitcointalk.org/index.php?board=18.0 Необходимо постить с моего аккаунта по 3-5 сообщений в день в течении пары месяцев. Указывайте желаемую цену за месяц.
Веб-программирование4 заявкиЗакрыт7 лет назад