Opublikowano 17 Grudnia 20231 r Cześć, Dziś zajmiemy się zabezpieczeniem serwera przed atakiem typu flood, który może powodować rozłączenia graczy. Atak ten wykorzystuje błąd w uwierzytelnianiu gracza podczas dodawania do listy przyjaciół przez funkcję messenger_auth. Naszym celem jest zapewnienie stabilności serwera i ochrona przed nadmiernym zalewaniem pakietami, które może negatywnie wpłynąć na doświadczenie graczy. Implementacja: 📂 Lokalizacja pliku: 'game -> cmd_general.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień Jeśli nie masz tu żadnych zmian możesz zaktualizować cały kod. 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> messenger_manager.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> messenger_manager.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 28 Stycznia 20241 r przydatne 🙂 wrzucam rozwiązanie też Dla starszych wersji: ACMD(do_messenger_auth) { if (ch->GetArena()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ĂŔ忡Ľ »çżëÇĎ˝Ç Ľö ľř˝Ŕ´Ď´Ů.")); return; } char firstArgument[256], secondArgument[256]; two_arguments(argument, firstArgument, sizeof(firstArgument), secondArgument, sizeof(secondArgument)); if (!*firstArgument || !*secondArgument) { return; } bool isFriendRequestDenied = std::tolower(firstArgument[0]) != 'y'; bool isFriendRequestProcessed = MessengerManager::instance().AuthToAdd(ch->GetName(), secondArgument, isFriendRequestDenied) != 0; if (isFriendRequestProcessed && isFriendRequestDenied) { CHARACTER* targetCharacter = CHARACTER_MANAGER::instance().FindPC(secondArgument); if (targetCharacter) { targetCharacter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ´ÔŔ¸·Î şÎĹÍ ÄŁ±¸ µî·ĎŔ» °ĹşÎ ´çÇß˝Ŕ´Ď´Ů."), ch->GetName()); } } } Edytowane 28 Stycznia 20241 r przez Denis
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.