Безпека пароля та автентифікації
Кожен пароль у VvW хешується за допомогою bcrypt з коефіцієнтом роботи 12. Ми ніколи не зберігаємо паролі у відкритому вигляді — ані в журналах, ані у виводі налагодження, ніде. Коли ви реєструєтеся, ваш пароль негайно хешується до того, як він торкнеться бази даних. На наших серверах зберігається хеш.
Ми автентифікуємо за допомогою JWT (JSON Web Tokens) з терміном дії 24 години. Токени підписуються 256-бітним секретним ключем, що ротується кожні 90 днів. Якщо ви виходите, токен додається до чорного списку Redis, тому його не можна повторно використати навіть якщо він перехоплений до закінчення терміну дії.
Ми не реалізуємо токени "запам'ятати мене" з довговічними секретами. Ваша сесія оновлюється при кожному вході. Якщо ваш обліковий запис коли-небудь скомпрометовано, зміна пароля негайно анулює всі активні сесії.
Управління сесіями
Всі ігрові дії перевіряються на сервері. Ваш клієнт надсилає запити; наш сервер вирішує, чи є вони дійсними. Клієнт ніколи не має авторитету — він має лише стан відображення. Це означає, що навіть якщо хтось модифікує JavaScript свого браузера, він не може нарахувати собі золото, XP або предмети.
Кожна чутлива дія (Престиж, великі транзакції золота, PvP-атаки) вимагає свіжого токен-твердження. Ми перехресно посилаємось на ID вашого персонажа з корисним навантаженням JWT на кожному автентифікованому ендпоінті.
Обмеження частоти та захист від підбору паролів
Спроби входу обмежені до 5 на хвилину на IP та 10 на годину на ім'я користувача. Після 10 невдалих спроб на одному обліковому записі ми запускаємо крок перевірки електронної пошти перед дозволом подальших спроб.
Всі ендпоінти ігрових дій обмежені через Redis. Наприклад, ендпоінт полювання обмежений до 1 запиту на 800мс на персонажа. Це запобігає отриманню ботами-скриптами несправедливих переваг XP/золота.
| Ендпоінт | Обмеження частоти | Застосування |
|---|---|---|
| POST /auth/login | 5/хв на IP | Ковзне вікно Redis |
| POST /battle/hunt | 1/800мс на персонажа | Відро токенів Redis |
| POST /arena/attack | 1/5с на персонажа | Відро токенів Redis |
| POST /shop/buy | 10/хв на персонажа | Лічильник Redis |
| POST /trade/create | 5/хв на персонажа | Лічильник Redis |
Дизайн антишахрайства
Найважливіший принцип антишахрайства: сервер завжди є авторитетом. Числа на стороні клієнта лише для відображення. Кожне обчислення шкоди, кожна нагорода золотом, кожне збільшення XP обчислюється на сервері, використовуючи фактичну статистику персонажа у базі даних.
Кулдауни застосовуються в Redis, а не на клієнті. Коли ви завершуєте підземелля, сервер записує last_dungeon_attempt у Redis з TTL. Якщо ви спробуєте запустити його знову до закінчення кулдауну, сервер відхилить запит незалежно від того, що заявляє клієнт.
Перевірки збудовуваності статистики
Кожна обчислена статистика перевіряється на межі. Якщо ATK виявляється вище 10 000, сервер позначає обліковий запис для перевірки. Це виявляє крайні випадки від спроб експлойту або пошкодження даних.
Ми аналізуємо часові шаблони дій. Реальні гравці мають нерегулярний час; боти ідеально послідовні. Облікові записи з підозріло регулярними інтервалами запитів (±20мс варіація за 200+ запитів) позначаються для CAPTCHA-виклику.
Які дані ми зберігаємо (і не зберігаємо)
Ми зберігаємо: ім'я користувача, електронну пошту (хешовану для зберігання), дані персонажа, журнали ігор (тип дії, мітка часу — без вмісту), IP-адресу останнього входу (для виявлення шахрайства, зберігання 30 днів).
Ми не зберігаємо: паролі у відкритому вигляді, дані платіжних карток (Stripe обробляє всі платежі, ми зберігаємо лише статус підписки), особисті імена або адреси, місцезнаходження понад код країни.
Програма відповідального розкриття
Знайшли вразливість безпеки? Ми хочемо почути від вас до того, як це зробить будь-хто інший. Наша політика відповідального розкриття:
- Повідомляйте на security@duskmaw.com із повними кроками відтворення
- Ми підтверджуємо протягом 24 годин та виправляємо критичні проблеми протягом 72 годин
- Ті, хто повідомляє про дійсні, значущі вразливості, отримують внутрішньоігрові нагороди та публічне визнання
- Ми не переслідуємо юридично дослідників у доброму намірі, що дотримуються цієї політики
У нас ще немає офіційної програми bug bounty з грошовими нагородами — але ми йдемо до цього. Всі дійсні заявки підтверджуються та винагороджуються преміум внутрішньоігровою валютою.
Грайте з впевненістю
Ваш обліковий запис та дані захищені кількома шарами безпеки. VvW сприймає безпеку серйозно — не як функцію, а як фундамент.
Створіть свій обліковий запис →