Вокруг сервера
Сайт для сервера Lineage 2
Сайт сервера — это не витрина, а часть инфраструктуры: через него регистрируются, с него качают патч, по нему судят, стоит ли вообще заходить. И именно он чаще всего оказывается дырой, через которую уводят базу аккаунтов.
Обязательный минимум
Всё остальное — украшения. Без этих шести вещей человек, пришедший по ссылке, уходит, не разобравшись.
- Рейты и хроника на первом экране. Первое, что ищет игрок, и единственное, по чему он отсеивает сервер за три секунды. Какие множители вообще есть.
- Регистрация. Создание игрового аккаунта без танцев с бубном.
- Скачать клиент и патч. С указанием версии и размера. Ссылка на чужой файлообменник с рекламой — главная причина, по которой до игры не доходят.
- Статус сервера. Онлайн или нет, сколько человек. Устаревший счётчик хуже его отсутствия.
- Правила и что продаётся за деньги. Честно и в одном месте: по этому пункту сервер оценивают опытные игроки.
- Куда писать. Живой контакт, а не форма обратной связи в никуда.
Откуда берётся «онлайн»
Два рабочих способа, и у каждого своя цена.
- Спросить у сервера. Сайт проверяет, отвечает ли игровой порт, и показывает результат. Честно, но даёт только «жив или нет», без количества игроков.
- Прочитать из базы. Количество персонажей в игре сервер и так хранит. Точнее, но означает, что сайт ходит в базу игрового сервера — а это ровно та связь, которую потом эксплуатируют.
Любой из вариантов надо кешировать. Счётчик, который дёргает сервер на каждое обновление страницы, под наплывом посетителей начинает мешать самому серверу.
Регистрация — самое опасное место
Форма регистрации означает, что сайт пишет в таблицу аккаунтов. То есть веб-часть, доступная всему интернету, имеет доступ к учётным данным игроков. Отсюда три правила, и они не обсуждаются.
- Отдельный пользователь базы для сайта. С правами только на таблицу аккаунтов, и только на то, что действительно нужно. Не тот же пользователь, под которым работает игровой сервер.
- Пароль хранится так же, как его ждёт сервер. L2J исторически держит его хешем без соли — по нынешним меркам это слабо, и единственное, что вы можете сделать, — не ухудшать: не хранить пароли открытым текстом нигде по дороге и не слать их на почту.
- База не смотрит наружу. Даже если сайт и сервер на разных машинах, доступ к ней идёт по закрытому каналу, а не по открытому в интернет порту.
Готовые шаблоны и чем они кончаются
Шаблоны сайтов под Lineage 2 лежат на форумах пачками: оформление под конкретную хронику, готовая регистрация, счётчик онлайна, иногда магазин. Соблазн понятный — всё уже сделано.
Проблема в том, что такой шаблон приходит с рабочим кодом регистрации, то есть с доступом к базе аккаунтов. Добавить туда тихую отправку логина с паролем на сторону — несколько строк, которые в чужом коде не видны никому, кто его не читал целиком. Это та же история, что с серверными сборками, только последствия заметнее: уводят не сервер, а игроков. Про бэкдоры в сборках.
Что с этим делать:
- Брать оформление, а не код. Вёрстку и картинки — да, готовую регистрацию — нет.
- Если код всё же чужой — читать то, что работает с базой и с паролями. Это один-два файла, а не весь проект.
- Смотреть, куда сайт ходит наружу. Запрос на незнакомый адрес в коде регистрации объясняться не должен — он должен удаляться.
- Держать сайт и игровой сервер на разных учётных записях базы. Тогда дыра в сайте остаётся дырой в сайте.
На этом домене до нас выкладывали в том числе такие шаблоны. Мы их не выкладываем и ссылок на них не даём — по той же причине, по которой не раздаём сборки.