NextClient использует криптографическую подпись для подтверждения подлинности клиента. Это позволяет серверу отличать настоящий NextClient от поддельных модификаций, выдающих себя за него.
Зачем это нужно #
Без верификации любой клиент может представиться как NextClient через отправку соответствующих идентификаторов. Верификация решает эту проблему — поддельные клиенты не пройдут проверку.
Как это работает #
При подключении игрока с NextClient модуль:
- Запрашивает у клиента подпись на серверный challenge
- Проверяет подпись по публичному ключу
- Только при успешной проверке вызывается
ncl_client_api_ready
То есть если forward вызвался — клиент гарантированно настоящий.
Использование в коде #
#include <amxmodx>
#include <nextclientapi>
public client_putinserver(id)
{
// На этом этапе API ЕЩЁ НЕ ГОТОВ
// ncl_is_using_nextclient() здесь может вернуть некорректный результат
}
public ncl_client_api_ready(id)
{
// А вот здесь — клиент верифицирован
// Все ncl_* функции безопасны для вызова
grant_trusted_privileges(id);
}
Чего НЕ делать #
- Не доверять
ncl_is_using_nextclientдоncl_client_api_ready— результат может быть преждевременным - Не выдавать критичные привилегии только по факту NextClient — комбинируйте с другими методами
- Не пытаться отключить верификацию — она работает на уровне модуля и обеспечивает безопасность
Дополнительная защита #
Для VIP-функций рекомендуется дополнительно проверять Steam ID или использовать систему паролей:
public ncl_client_api_ready(id)
{
new authid[32];
get_user_authid(id, authid, charsmax(authid));
if (is_vip_authid(authid))
{
grant_vip(id);
}
}