За последние 24 часа нас посетили 19717 программистов и 1608 роботов. Сейчас ищут 1484 программиста ...

Как защитить свои PHP скрипты от CURLE запросов с "чужих" доменов?

Тема в разделе "PHP для новичков", создана пользователем denismix, 31 авг 2021.

Метки:
  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.116
    Симпатии:
    1.244
    Адрес:
    там-сям
    Всю тему не читал. Чую что есть недопонимание от чего именно защищаемся - от "человека посередине" или от "спайдеров, имитирующих реального посетителя". В любом случае, абсолютной защиты не существует. При этом простые средства отсекут 80% нежелательных посетителей. Может быть это достаточно хороший результат.
     
  2. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    Верно! Я в общем то об этом все время пишу и дублирую доменов/сайтов т.к. все это по-разному называют =)


    Это совершенно не важно. Важно, чтобы с "чужих" страниц/доменов/сайтов не обращались к моему .php который получает POST с картинкой, обрабатывает на сервере картинку, и возвращает обработанный результат.

    =====================================
    Наверное проще показать: s-art.pro - это "PRO" версия со всякими "непонятными" настройками =)
    Суть преобразования - подготовить картинку рисуемую одной непрерывной линией - это для хобби такого, Стрингарт.

    Step_1: [Ореn] открываете картинку, лучше фото лица >>(можно ее масштабировать и т.д.)>>жмете [Crop & to Step2]
    Step_2: (этот шаг можно пропустить), сразу жмете [to Step3]
    Step_3: появится результат
    =====================================
    Так вот, при нажатии на [to Step3] или [Upload] - js отправляет картинку из Step_2 на upload.php, который собственно и преобразует ее в "цепочку" чисел, по которым потом рисуется "штриховой" рисунок.

    Вот к этому upload.php и "цепляются" пираты.
    С сайта на сервер уходит картинка, с сервера на сайт приходит "цепочка" чисел, типа 0,125, 43, 76... Все это в пределах одного POST

    Делать регистрацию я очень не хочу, т.к. сайтом пользуются совершенно не дружащие с компом юзеры, раньше регистрация была, но пришлось ее убрать...
    --- Добавлено ---
    Да, это выделенный сервер под Server 2019, полностью под моим администрированием.
    --- Добавлено ---
    Именно от них! И от тех, кто просто тупо "дублирует" всю мою страницу к себе на сайт или грузит её расширенным cURL и парсит "цепочку"
     
    #52 denismix, 3 сен 2021
    Последнее редактирование: 3 сен 2021
  3. musicman3

    musicman3 Активный пользователь

    С нами с:
    30 июн 2019
    Сообщения:
    144
    Симпатии:
    12
    Адрес:
    Дыра на карте
    От тех кто тупо дублирует к себе страницу на сайт уже нашли решение - CSRF, а от расширенного парсинга с заголовками + CURL решения не нашли. Так что можете проверить первое решение, и понять на сколько снизится трафик для начала. Может и не потребуется ничего больше делать.

    Кстати, а как на счет дополнительно добавить капчу?
     
    #53 musicman3, 3 сен 2021
    Последнее редактирование: 3 сен 2021
  4. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    Капча так же не привязывается к домену - и я лично, могу элементарно "выгрызть ее из кода" при помощи JS за 5-10 минут, так что это скорее "замок от своих", чем против "воров" =)
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Мне кажется, вы вообще не в ту сторону смотрите.
    Задача решения не имеет, CURL по сути, и есть браузер, а то, что форму можно отправить откуда угодно, так это проблема не CURL в частности, а HTTP вообще.
    Если у вас проблема только с "паразитированием" на неавторизованном доступе, добавляйте на готовое изображение водяной знак с вашим доменом.
    Тоже, в принципе решаемо, но требует больших ресурсов.
     
  6. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    В общем, попробую вкорячить на свой сайт какую то модификацию по мотивам вот этой статьи и поюзать для проверки токены reCaptcha
    http://cccp-blog.com/koding/google-recaptcha-v3
    а там посмотрим, насколько она будет "грузить светофорами" живых юзверей =)
    --- Добавлено ---
    Спасибо! буду надеяться, что эта капча + модифицированная проверка сработают.
    --
    К сожалению, это бессмысленно, т.к. охотятся не за картинкой, а за "цепочкой" чисел, по которой она строится.
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Это был один из вариантов. Хитрость. Построенная на вероятном недопонимании злоумышленником механизма происходящего.
    Это может быть что-то другое.
    Например подключаемый элемент оформления страницы(изображение, стиль, скрипт и тд) на самом деле являющийся исполняемым файлом записывающим в переименованную сессию какое-то уникальное значение. Если на странице такого будет очень много, и при этом, оно будет, периодически переключаться, то это несколько затруднит жизнь злоумышленнику. Но не более.
    Категоричного решения нет.
     
  8. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    Пока что практически сделал reCaptcha 3 - до этого потестил на "пробной" странице, вроде она не грузит "светофорами" и работает очень шустро. Сдается мне, что в моей ситуации это лучшее из доступного.
    От "наглого" cURL, который ничего не парсит, а просто обращается к моему .php напрямую, это точно поможет, т.к. проверяется наличие подтвержденного токена.
    + как я почитал, cURL не так то и просто заставить пройти эту капчу даже обвесив дополнительными библиотеками, как минимум, это одно из реально действенных решений, не требующих каких то глобальных "заморочек" от разраба, т.е. от меня любимого =)

    Все же тяжко в одно рыло тащить подобный проект, очень уж много всего разного: JS, PHP, C++, нейросетки с их долбанутым Питоном, Pascal, .NET, C#, SQL, куча математики, HTML, Wordpress, настройка сервака, да еще до кучи постоянная "ругань" с хостерами у которых вечно что то отваливается, биллинговые системы с умолишенским API, графические библиотеки у которых весь хелп это пара комментов в самом коде из 100500 строк, всякие баннеры и верстка "морды", тексты на английском, по которому у меня твердая "двойка"... но интересно, аж жуть =)))
     
    #58 denismix, 4 сен 2021
    Последнее редактирование: 4 сен 2021
  9. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    UPD - сделал reCaptcha 3, вроде работает без нареканий и на десктопах и на смартфонах. Юзеры пока не жалуются...
    Могу рекомендовать как относительно безболезненное и простое решение.

    Суть решения.
    1. Рекапча на странице генерирует токен, который содержит в себе информацию о поведении пользователя: там куча всего, включая движения мышкой и местоположение...
    2. Этот токен передается в требующий "защиты" .php вместе с другой нужной вам информацией
    3. В .php в самом начале стоит отправка полученного токена в Гугл, где он дешифруется секретным ключом и приходит оценка от 0 до 1, где 0 - это скорее всего к .php обратился скрипт, 1 - скорее всего это было разумное теплокровное, включая кошек...

    Обратите внимание, что токен Рекапчи "живет" только две минуты!!!!
    Т.е. его желательно обновлять при каждом обращении к .php если вы к нему обращаетесь не часто.

    Что хватать, куда бежать, можно посмотреть здесь:
    Google reCAPTCHA v3: обзор возможностей и установка на PHP сайт (cccp-blog.com)
    servlets - Google Recaptcha v3 example demo - Stack Overflow
    Как убрать значок reCAPTCHA v3 и не поссориться с Гуглом | mArjArI. Создание сайтов
     
    #59 denismix, 4 сен 2021
    Последнее редактирование: 4 сен 2021
  10. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Если я правильно понял, то тут просто используется статистика поведения "браузера" на других сайтах, то есть, по сути, это авторизация.
    Вряд ли оно будет работать с мнительными пользователями, блокирующими трекеры и очищающими историю.
    Но рад, что вы нашли устраивающее вас решение.
     
  11. denismix

    denismix Новичок

    С нами с:
    31 авг 2021
    Сообщения:
    14
    Симпатии:
    0
    Среди пользователей моего сайта, большинство людей не понимающих что такое Ctrl+F5, чем "мнительных".
    Так что тут всё нормально =)))

    В любом случае, reCaptcha это как раз симбиоз всего, что тут обсуждалось: токен + "запутанный" JS код запрашивающий первичный ключ + проверка на сессии (с сохранением их на серверах Гугла) + короткие сессии + (из необсуждаемого ранее) AI проверка на "робота" = кмк сложно найти что-то подобное "в одном флаконе" с внятным и много раз "разжеванным" хелпом, понятной интеграцией, да еще и заведомо мульти- браузерное/платформенное (и бесплатное!)