Здравствуйте.
В качестве примера возьмем игру кликер написанную на js. При каждом клике у игрока добавляется +1 очко. В качестве бэкэнда используется Php. Поделитесь пожалуйста опытом, знаниями, мыслями о том, как делать корректную проверку на количество кликов клиента на стороне сервера для хранения информации в бд ( если конечно такие методы существуют )
Никак не сделать. Всё, что может клиент отправить на сервер, он может отправить и при помощи стороннего скрипта. Разве что отправлять на сервер каждый клик, но нагрузка тогда будет неоправданно высокой
Защитить javascript от модификации можно, например используя открытый/закрытый ключ для передачи рабочего javascript (nocors.000webhostapp.com/index.html распаковывает и выполняет в браузере требуемые действия - минимизирует html и css, но скопировать и тем более модифицировать рабочий скрипт невозможно).
Речь идет не о том html что написан в textarea на данной странице примера и виден сразу при открытии ссылки, но о том скрипте который выполняет некоторые операции с показываемым текстом html в части style.
Чтобы было более наглядно можете взглянуть еще на один пример: nocors.000webhostapp.com/forum2020/index.php и пробовать копировать не оболочку скрипта, но сам исполняемый скрипт, и модифицировать его на свой вкус.
Ogenrieta, Я не очень понял, что значит "оболочка" и "сам скрипт".
Всё, что скачивается в браузер - можно отследить и модифицировать. Вплоть до MiTM-атак на HTTPS (с внедрением собственного сертификата в браузер).
Можно попытаться запутать JS-код; можно то и дело скачивать с сервера кусочки JS-кода, затрудняя взломщику анализ JS-кода. Это всё ведёт к резкому падению производительности, а против нормального взломщика помогает крайне слабо.
Единственный надёжный путь - это выполнять все скрипты на сервере. А юзеру можно присылать вообще картинку, как при терминальном доступе. Это сильно грузит сервер и значительно увеличивает трафик - например, прокрутка страницы теперь будет грузить сервер и создавать трафик, тогда как классическая схема работы предполагает всю интерактивную работу на клиенте, а трафик создаётся только когда это совсем необходимо.
Всё, что скачивается в браузер - можно отследить - но не расшифровать, степень сложности шифрования достаточно высока.
Работу моего скрипта можно еще как то увидеть, однажды мне уже показывали такой фокус и я проиграл тогда спор на деньги, но на этот счет у меня уже есть пара задумок, пока еще не реализованных в данной версии, что впрочем не мешает это сделать в дальнейшем, главное надо настроиться и заставить себя сделать и эти важные детали.
Можно попытаться запутать JS-код - о да, конечно, на как можно убедиться на этих примерах, это всего лишь уловка, основной стопор это все же закрытый ключ.
Это всё ведёт к резкому падению производительности - Вы заметили ощутимое падение скорости работы браузера? В первом примере этого нету, во втором это неизбежно, т.к. картинки расшифровываются в браузере последовательно отображаются на экране, без картинок замедление не существенно.
Прокрутка страницы теперь будет грузить сервер и создавать трафик - напротив! Ни одного лишнего запроса на сервер, даже когда Вы возвращаетесь к Home и обратно на ту страницу которую уже открывали ранее, попробуйте во втором примере - мгновенное обновление экрана. Тем самым трафик экономится! не передаются даже теги html чтобы отобразить контент, пересылается исключительно данные - текст и фото.
Про нормального взломщика - Вы можете пару строк взломанного скрипта здесь привести?
(который не только получает с сервера данные в зашифрованном виде, но и в таком же виде в т.ч. и фото отправляет на сервер, и обычно вопрос который я получаю - и зачем это надо? т.е. зачем мне это нужно?)
Вы меня не удивили, об этом я только что писал.
Надо отдать Вам должное - Вы знаете куда смотреть = нормальный взломщик :)
Chrome помощник действительно хороший, для Вас, для меня же он предатель выдающий тайны, но идея была несколько иной - трафик не должен быть взломан, т.е. сервер может быть "уверен" что отдает свой контент в надежные руки, а любопытный ( MiTM ) ничего ценного при этом получить (расшифровать) не должен, так же как и подменить что либо и остаться не замеченным.
То что Вы показали сделал для Вас браузер, а если Вы не посетитель сайта, а например MiTM, сможете расшифровать запросы и ответы на них?
Кстати, можете ли Вы выведать у своего браузера закрытый ключ, который "любопытному" так необходим для дешифровки сообщений? (может это проще чем внедрение собственного сертификата в браузер)
"DNS поверх HTTPS (DoH) — протокол для выполнения разрешения DNS по протоколу HTTPS. Целью этого метода является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа «Атака посредника»."
То что в wikipedia описано для уровня браузера, в моем примере реализовано в javascript.
(и не только для HTTPS)