Opublikowano 17 Grudnia 20232 l 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 Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto ♻️ Zamień Jeśli nie masz tu żadnych zmian możesz zaktualizować cały kod. 📂 Lokalizacja pliku: 'game -> messenger_manager.cpp' 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ➕ Dodaj 📂 Lokalizacja pliku: 'game -> messenger_manager.h' 🔍 Szukaj ♻️ Zamień
Opublikowano 28 Stycznia 20242 l przydatne 🙂 wrzucam rozwiązanie też Dla starszych wersji: HTMLKod został skopiowanyACMD(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 20242 l przez Denis
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto