Безопасный веб-язык для онлайн-мини-игры?

Я видел довольно много небольших онлайн-игр, созданных на Javascript (блэкджек и т. д.). Хотя некоторые из них довольно хороши, они не кажутся безопасными, поскольку Javascript обрабатывается на стороне клиента. Глядя на некоторые игры, которые я хотел бы создать, и думая о долгосрочной перспективе с платными играми / учетными записями пользователей, я подумал, что мне нужно что-то более безопасное, где определенная игровая логика скрыта от конечного пользователя.

Любые рекомендации для веб-языков/технологий, которые удовлетворяли бы этому? Открытый исходный код/бесплатно предпочтительнее. Является ли Flash лучшим вариантом здесь (не с открытым исходным кодом)? В настоящее время у меня самый большой опыт работы со стандартными HTML/CSS/Javascript и PHP.

Просто ищу идеи.

Спасибо!


person MattB    schedule 17.12.2010    source источник


Ответы (2)


Имея дело с безопасностью, вы всегда должны определять, что такое безопасность. Если вы управляете сайтом, посвященным азартным играм, ваша местная комиссия по азартным играм может иметь какое-то мнение по этому поводу. Если вы просто запускаете многопользовательскую игру для развлечения, то вы можете быть более свободными в своем определении (при условии, что случайный читерство не испортит день).

В общем, если вы хотите полностью предотвратить вмешательство конечного пользователя в игровой процесс, вся реальная работа должна выполняться на сервере, которым вы управляете. Это означает, что PHP, ruby, perl, python, Java и т. д. С интерфейсом flash, javascript или html5, который, как вы должны предполагать, может создавать ненадежные данные, даже если они идеально обработаны.

Чтобы свести к минимуму влияние злонамеренного игрока, отправляющего на сервер специально созданные поддельные данные, вы должны использовать серверный язык, который обрабатывает для вас проверку размера/границы буфера и очистку входных параметров. Я часто использую PHP, он автоматически выполняет проверку границ, как и большинство языков сценариев. PHP не очищает автоматически данные, которые были введены на стороне клиента, но имеет хорошие инструменты для работы со строками, так что я могу сделать это сам. Будьте осторожны при обработке апострофов, тегов html и javascript, которые пользователь может ввести, чтобы предотвратить внедрение Sql ( http://en.wikipedia.org/wiki/SQL_injection ) и атаки с использованием сценариев Cross Sight ( http://en.wikipedia.org/wiki/Cross-site_scripting ). Преобразование всех ',‹,> в коды символов — хорошее начало, но вам следует тщательно изучить тему. Чтобы помочь с атаками межсайтового скриптинга, вы должны игнорировать запросы, поступающие от других доменных имен, если только у вас нет особой необходимости поступать иначе.

Что же касается всех вопросов программирования, тщательно продумайте их и как можно больше тестируйте на как можно большем количестве разнообразных данных.

person Sqeaky    schedule 17.12.2010

Лучшим вариантом здесь было бы обеспечить безопасность необходимой обработки на стороне сервера и проверять все, что приходит к вам от клиента.

Независимо от того, использует ли ваш внешний интерфейс javascript, Flash или что-то еще, когда он сообщает серверной части «игрок только что перевернул карту и получил блэкджек», вы должны иметь возможность подтвердить на сервере, что игрок может Переверните карту и получите блэкджек прямо сейчас.

Что касается технологий, используйте то, что вы знаете - с PHP все будет в порядке, вам просто нужно убедиться, что вы выполняете эти проверки пользовательского ввода.

person girasquid    schedule 17.12.2010