Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Zautomatyzowana moderacja

Zautomatyzowany system moderacji wykorzystuje mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłanie wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.

Zautomatyzowany system moderacji (opcjonalnie)

Zautomatyzowany system moderacji wykorzystuje mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłanie wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.

W środowisku produkcyjnym powinieneś korzystać z Cloudflare lub innego zabezpieczenia przed atakami DDoS, aby skutecznie chronić serwer przed nadmierną liczbą zapytań, jednak te zmiany w dużej mierze ochronią Cię przed pojedynczymi lub kilkoma nieuczciwymi użytkownikami, którzy obierają za cel Twoją wdrożoną instancję w celu wykorzystania jej jako proxy.

Uwagi

  • Wykorzystuje Caching do podstawowych zabezpieczeń i logowania naruszeń (bany, jednoczesne wiadomości, przekroczenie limitów zapytań)
    • W niedalekiej przyszłości dodam obsługę Redis dla instancji produkcyjnych, którą można łatwo wstrzyknąć do obecnej konfiguracji buforowania.
  • Przekroczenie któregokolwiek z limitów szybkości (logowanie/rejestracja/wiadomości) jest uważane za naruszenie, domyślny wynik to 1
  • Pochodzenie inne niż przeglądarka stanowi naruszenie
  • Domyślny wynik dla każdego naruszenia jest konfigurowalny
  • Włączenie któregokolwiek z limitów i/lub blokad aktywuje buforowanie/logowanie
  • Dzienniki naruszeń można znaleźć w folderze data, który jest tworzony w momencie rozpoczęcia rejestrowania: librechat/data
    • Rejestrowane są tylko naruszenia
    • violations.json śledzi całkowitą liczbę naruszeń dla każdego użytkownika
    • logs.json rejestruje każde pojedyncze naruszenie dla każdego użytkownika
  • Dzienniki banów są przechowywane w MongoDB w kolekcji logs. Są one tymczasowe, ponieważ istnieją tylko przez czas trwania bana.
    • Jeśli chcesz ręcznie usunąć blokadę, musisz usunąć użytkownika z bazy danych ręcznie i zrestartować serwer.
    • Planowane jest również wsparcie dla Redis w tym zakresie.

Typy ograniczników szybkości (Rate Limiter)

Ograniczanie częstotliwości logowania i rejestracji

Zapobiega atakom typu brute force oraz rejestracjom spamerskim poprzez ograniczenie liczby prób logowania lub rejestracji nowych kont, które mogą zostać wykonane z jednego adresu IP w określonym przedziale czasowym.

Ograniczanie częstotliwości wiadomości

Kontroluje częstotliwość wysyłania wiadomości przez użytkowników w celu zapobiegania spamowi i nadużyciom:

  • Ograniczenie jednoczesnych wiadomości: Ogranicza liczbę wiadomości, które użytkownik może wysłać jednocześnie (zapobiega otwieraniu przez użytkowników wielu kart w celu obejścia limitów)
  • Ograniczanie częstotliwości wiadomości: Kontroluje, jak często wiadomości mogą być wysyłane, z możliwością konfiguracji zarówno według adresu IP, jak i poszczególnego użytkownika

Limitowanie szybkości importu konwersacji

Zapobiega nadużywaniu funkcji importu konwersacji poprzez ograniczenie liczby konwersacji, które można zaimportować w określonym przedziale czasowym. Pomaga to zapobiegać:

  • Masowe importy danych, które mogłyby przeciążyć serwer
  • Zautomatyzowane skrypty próbujące przeciążyć system importowanymi danymi
  • Wyczerpanie zasobów wynikające z przetwarzania dużej liczby importów

Domyślne limity:

  • Oparte na IP: 100 zapytań na minutę
  • Oparte na użytkowniku: 50 importów na minutę (domyślnie wyłączone)

Ograniczanie częstotliwości forkowania konwersacji

Określa, jak często użytkownicy mogą tworzyć forki (kopie) istniejących konwersacji. Zapobiega to:

  • Nadmierny wzrost bazy danych spowodowany masowym powielaniem konwersacji
  • Wyczerpanie zasobów z operacji fork
  • Nadużywanie funkcji forkowania do spamu lub pozyskiwania danych

Domyślne limity:

  • Oparte na IP: 30 zapytań na minutę
  • Oparte na użytkowniku: 7 forków na minutę (domyślnie wyłączone)

Ograniczanie szybkości przesyłania plików

Konfigurowane za pomocą pliku librechat.yaml, ustawienie to kontroluje częstotliwość przesyłania plików przez użytkowników, aby zapobiec nadużyciom pamięci masowej i wyczerpaniu przepustowości.

Ograniczanie szybkości (Rate Limiting) Text-to-Speech (TTS)

Określa, jak często użytkownicy mogą żądać konwersji tekstu na mowę. Zapobiega to:

  • Nadmierne koszty użycia API
  • Wyczerpanie zasobów serwera przez generowanie dźwięku
  • Nadużywanie funkcji TTS do zbierania danych

Konfigurowane za pomocą pliku librechat.yaml z możliwością dostosowania limitów na adres IP oraz na użytkownika.

Ograniczanie szybkości (Rate Limiting) funkcji Speech-to-Text (STT)

Określa, jak często użytkownicy mogą przesyłać dźwięk do transkrypcji. Zapobiega to:

  • Nadmierne koszty użycia API
  • Wyczerpanie zasobów serwera spowodowane przetwarzaniem dźwięku
  • Nadużywanie funkcji STT do nieautoryzowanych usług transkrypcji

Konfigurowane za pomocą pliku librechat.yaml z możliwością dostosowania limitów na adres IP oraz na użytkownika.

Ograniczanie częstotliwości resetowania hasła

Określa, jak często użytkownicy mogą żądać e-maili z resetowaniem hasła. Zapobiega to:

  • Ataki typu email bombing
  • Nadużywanie systemu resetowania hasła
  • Nadmierne korzystanie z usługi poczty elektronicznej

Ograniczanie częstotliwości weryfikacji adresu e-mail

Określa, jak często użytkownicy mogą prosić o wiadomości weryfikacyjne e-mail. Zapobiega to:

  • Ataki spamowe poprzez system weryfikacji
  • Nadużywanie usługi poczty elektronicznej
  • Wyczerpanie zasobów wynikające z żądań weryfikacji

Ograniczanie częstotliwości wywołań narzędzi (Tool Call Rate Limiting)

Określa, jak często użytkownicy mogą wywoływać narzędzia/wtyczki. Zapobiega to:

  • Nadmierne użycie API przez zintegrowane narzędzia
  • Nadużywanie integracji z usługami zewnętrznymi
  • Wyczerpanie zasobów podczas przetwarzania narzędzi

Ograniczanie częstotliwości dostępu do konwersacji

Określa, jak często użytkownicy mogą uzyskiwać dostęp lub próbować uzyskać dostęp do konwersacji. Zapobiega to:

  • Próby nieautoryzowanego dostępu
  • Ataki typu data scraping
  • Nadmierna liczba zapytań do bazy danych

Limitery szybkości (Rate Limiters)

Obecne limitery szybkości (rate limiters) projektu są następujące (zobacz poniżej w sekcji konfiguracji domyślne wartości):

  • Ograniczanie częstotliwości logowania i rejestracji
  • Optional: Concurrent Message limiting (only X messages at a time per user)
  • Optional: Message limiting (how often a user can send a message, configurable by IP and User)
  • Optional: Import conversation limiting (how often a user can import conversations, configurable by IP and User)
  • Optional: Conversation forking limiting (how often a user can fork conversations, configurable by IP and User)
  • Optional: Text-to-Speech (TTS) limiting (configurable through librechat.yaml config file)
  • Optional: Speech-to-Text (STT) limiting (configurable through librechat.yaml config file)
  • Optional: File Upload limiting (configurable through librechat.yaml config file)

Aby uzyskać więcej szczegółów, zapoznaj się z przewodnikiem konfiguracji dostępnym tutaj: Automated Moderation

Jaka jest ta instrukcja?