Opublikowano 18 Grudnia 20232 l 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 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 ➕ Dodaj: 📂 Lokalizacja pliku: 'game -> guild.h' 🔍 Szukaj ➕ Dodaj 📂 Lokalizacja pliku: 'game -> stdafx.h' ➕ Dodaj (jeśli nie masz) 📂 Lokalizacja pliku: 'share -> locale -> poland -> locale_string.txt' ➕ Dodaj: 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
Opublikowano 18 Grudnia 20232 l CKod został skopiowanyguild.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 20232 l Autor Zaktualizowałem temat, zmieniałem sobie trochę nazwy argumentów i zapomniałem zmienić w temacie na oryginalne.
Opublikowano 18 Grudnia 20232 l Jest dużo prostszy sposób i duzo bezpieczniejszy. Nie bez powodu zrobili PulseManager. CKod został skopiowanyif (!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 20232 l 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.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto