Opublikowano 18 Grudnia 20231 r Cześć, System komentarzy w Gildii jest podatny na nadużycia. Konkretnie, istnieje możliwość tzw. "floodowania" serwera poprzez wysyłanie nadmiernej liczby nowych komentarzy. To zagrożenie może przybrać formę zautomatyzowanego ataku za pomocą specjalnie spreparowanego skryptu, który wykorzystuje lukę w funkcjonalności dodawania komentarzy. Rozwiążemy ten problem poprzez wprowadzenie czasowego ograniczenia wynoszącego 1 minutę przed dodaniem kolejnego komentarza. Prezentacja rozwiązania: Implementacja: 📂 Lokalizacja pliku: 'game -> guild.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> guild.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'game -> stdafx.h' ➕ Dodaj (jeśli nie masz) 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂 Lokalizacja pliku: 'share -> locale -> poland -> locale_string.txt' ➕ Dodaj: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Kompatybilność: Jeśli masz zaimplementowaną tą poprawkę od wysyłania pustych znaków To warunek powinien być przed kontrolą czasu, aby po otrzymaniu komunikatu o pustej wiadomości nie dodawało nam limitu czasowego. Spoiler 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 18 Grudnia 20231 r guild.cpp:1020:3: error: use of undeclared identifier 'character' character->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("NOTIFICATION_ADD_COMMEND_GUILD_FLOOD_PROTECTION_%lld"), remainingTime); ^
Opublikowano 18 Grudnia 20231 r Autor Zaktualizowałem temat, zmieniałem sobie trochę nazwy argumentów i zapomniałem zmienić w temacie na oryginalne.
Opublikowano 18 Grudnia 20231 r Jest dużo prostszy sposób i duzo bezpieczniejszy. Nie bez powodu zrobili PulseManager. if (!PulseManager::Instance().IncreaseClock(ch->GetPlayerID(), ePulse::GuildComment, std::chrono::milliseconds(1500))) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Odczekaj: %.2f"), PULSEMANAGER_CLOCK_TO_SEC2(ch->GetPlayerID(), ePulse::GuildComment)); return; }
Opublikowano 18 Grudnia 20231 r Autor To czekamy na publikację tego modułu może się przydać. W każdym razie nie ma żadnej różnicy w jaki sposób to rozwiążemy efekt jest taki sam. Ja nie mam takiego modułu korzystam z brancha mailine_released więc zrobiłem to w ten sposób. Tworzę uniwersalne bug fixy, które będą kompatybilne z oryginalnym źródłem.
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ą.