Я начинающий разработчик и у меня есть сайт с игрой змейка. Там после игры значение переменной в которой хранятся очки игры отправляется методом post через jquery в php файл - а оттуда записывается в базу. Что бы потом вывести все результаты в топ листе. У меня в листе появился результат 999999999999 и имя - МожноОтправитьЛевыйЗапрос. Хотел узнать как примерно это можно было сделать и как этого избежать? вот ссылка если нужно snake.spacenear.ru - там js файл не минифицирован и с комментариями. Спасибо за помощь!)
spacenear, с такой архитектурой что либо исправить сложно, ведь у вас считается все на клиенте и с него приходят данные о завершении игры и счете. Переносить расчет игрового процесса на сервер, где вы можете контролировать какие-то параметры, не совсем рентабельно. Так как вы вынуждены "доверять" клиенту, а клиент в свою очередь может менять данные произвольным образом, задача в целом не имеет простого решения. В качестве некоторых мер можно открывать сессию на каждого пользователя который начинает игру и записывать какие-то достижения по мере создания событий на клиенте. В конце игры счет будет храниться на сервере(в сессии, например) и модифицировать его с клиента будет невозможно, однако никто не мешает так же посылать данные об успешном получении очков "вручную". Просто это уже потребует больше 1 запроса и мало кто будет заморачиваться.
spacenear, берёте curl и делаете абсолютно любой запрос. Да хоть руками вбить через netcat или telnet, если там простой http, а не https. Да, так можно. На любой url можно прислать любой запрос и только бекенда дело, что при этом случится и как понимать, что запрос пришёл ошибочный.
spacenear, ремарка про https относилась именно и только к набиранию запроса полностью руками фактически на голых сокетах. Просто потому что шифрование руками набирать неудобно.
Что угодно чуть-чуть повыше уровнем, что возьмёт tls уровень на себя - и можно снова общаться с сервером даже руками набирая запросы.
А уж если взять что-то для этого предназначенное как тот же curl - то вообще элементарно.
Почитай про SQL injection и проверь у себя на сайте.
Я уверен что ты просто не фильтруешь данные которые отправляешь через Jquery, а значить любой человек может отправить запрос к твоей базе данных
spacenear, смысл этих функций - исключить возможность XSS. Если обработать ими входящие данные, то возможность вливания внешнего скрипта практически исключается. Ну, если у вас в коде нет никаких eval.