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

Kiểm duyệt tự động

Hệ thống Kiểm duyệt Tự động sử dụng cơ chế tính điểm để theo dõi các vi phạm của người dùng. Khi người dùng thực hiện các hành động như đăng nhập, đăng ký hoặc gửi tin nhắn quá mức, họ sẽ tích lũy điểm vi phạm. Khi đạt đến ngưỡng đã thiết lập, người dùng và địa chỉ IP của họ sẽ bị cấm tạm thời. Hệ thống này đảm bảo an ninh nền tảng bằng cách giám sát và xử phạt các hoạt động nhanh hoặc đáng ngờ.

Hệ thống kiểm duyệt tự động (tùy chọn)

Hệ thống Kiểm duyệt Tự động sử dụng cơ chế tính điểm để theo dõi các vi phạm của người dùng. Khi người dùng thực hiện các hành động như đăng nhập, đăng ký hoặc gửi tin nhắn quá mức, họ sẽ tích lũy điểm vi phạm. Khi đạt đến ngưỡng đã thiết lập, người dùng và địa chỉ IP của họ sẽ bị cấm tạm thời. Hệ thống này đảm bảo an ninh nền tảng bằng cách giám sát và xử phạt các hoạt động nhanh hoặc đáng ngờ.

Trong môi trường production, bạn nên sử dụng Cloudflare hoặc một giải pháp bảo vệ chống DDoS khác để thực sự bảo vệ máy chủ khỏi các yêu cầu quá mức, nhưng những thay đổi này phần lớn sẽ bảo vệ bạn khỏi một hoặc vài đối tượng xấu nhắm mục tiêu vào instance đã triển khai của bạn để thực hiện proxy.

Ghi chú

  • Sử dụng Caching cho bảo mật cơ bản và ghi nhật ký vi phạm (cấm, tin nhắn đồng thời, vượt quá giới hạn tốc độ)
    • Trong tương lai gần, tôi sẽ thêm hỗ trợ Redis cho các instance production, tính năng này có thể được tích hợp dễ dàng vào thiết lập bộ nhớ đệm hiện tại.
  • Việc vượt quá bất kỳ giới hạn tốc độ nào (đăng nhập/đăng ký/nhắn tin) đều được coi là vi phạm, điểm mặc định là 1
  • Nguồn gốc không phải trình duyệt là một vi phạm
  • Điểm mặc định cho mỗi vi phạm có thể được cấu hình
  • Việc kích hoạt bất kỳ bộ giới hạn và/hoặc lệnh cấm nào cũng sẽ kích hoạt tính năng lưu bộ nhớ đệm/ghi nhật ký
  • Nhật ký vi phạm có thể được tìm thấy trong thư mục data, thư mục này được tạo khi quá trình ghi nhật ký bắt đầu: librechat/data
    • Chỉ các vi phạm mới được ghi lại
    • violations.json theo dõi tổng số lần vi phạm cho mỗi người dùng
    • logs.json ghi lại từng vi phạm riêng lẻ cho mỗi người dùng
  • Các bản ghi (logs) bị cấm được lưu trữ trong MongoDB dưới collection logs. Chúng là tạm thời vì chúng chỉ tồn tại trong thời gian bị cấm.
    • Nếu bạn muốn xóa lệnh cấm theo cách thủ công, bạn sẽ phải xóa người dùng đó khỏi cơ sở dữ liệu theo cách thủ công và khởi động lại máy chủ.
    • Hỗ trợ Redis cũng đã được lên kế hoạch cho tính năng này.

Các loại Rate Limiter

Giới hạn tốc độ đăng nhập và đăng ký

Ngăn chặn các cuộc tấn công brute force và đăng ký spam bằng cách giới hạn số lần thử đăng nhập hoặc đăng ký tài khoản mới từ một địa chỉ IP duy nhất trong một khoảng thời gian nhất định.

Giới hạn tốc độ tin nhắn

Kiểm soát tần suất người dùng có thể gửi tin nhắn để ngăn chặn spam và lạm dụng:

  • Giới hạn tin nhắn đồng thời: Giới hạn số lượng tin nhắn mà người dùng có thể gửi cùng một lúc (ngăn chặn người dùng mở nhiều tab để vượt qua các giới hạn)
  • Giới hạn tần suất tin nhắn: Kiểm soát tần suất gửi tin nhắn, có thể cấu hình theo cả địa chỉ IP và từng người dùng riêng biệt

Giới hạn tốc độ nhập cuộc trò chuyện

Ngăn chặn việc lạm dụng tính năng nhập cuộc trò chuyện bằng cách giới hạn số lượng cuộc trò chuyện có thể được nhập trong một khoảng thời gian. Điều này giúp ngăn chặn:

  • Nhập dữ liệu hàng loạt có thể gây quá tải cho máy chủ
  • Các tập lệnh tự động cố gắng làm tràn hệ thống bằng dữ liệu được nhập
  • Cạn kiệt tài nguyên do xử lý số lượng lớn các tệp nhập (imports)

Các giới hạn mặc định:

  • Dựa trên IP: 100 lượt nhập mỗi phút
  • Dựa trên người dùng: 50 lượt nhập mỗi phút (mặc định bị vô hiệu hóa)

Giới hạn tốc độ phân nhánh hội thoại (Conversation Forking Rate Limiting)

Kiểm soát tần suất người dùng có thể tạo bản sao (fork) của các cuộc trò chuyện hiện có. Điều này giúp ngăn chặn:

  • Dung lượng cơ sở dữ liệu tăng quá mức do sao chép hàng loạt cuộc trò chuyện
  • Cạn kiệt tài nguyên do các thao tác fork
  • Lạm dụng tính năng forking để gửi thư rác (spam) hoặc thu thập dữ liệu

Các giới hạn mặc định:

  • Dựa trên IP: 30 yêu cầu mỗi phút
  • Dựa trên người dùng: 7 forks mỗi phút (mặc định bị vô hiệu hóa)

Giới hạn tốc độ tải lên tệp tin

Được cấu hình thông qua tệp librechat.yaml, tính năng này kiểm soát tần suất người dùng có thể tải tệp lên nhằm ngăn chặn việc lạm dụng lưu trữ và cạn kiệt băng thông.

Giới hạn tốc độ Text-to-Speech (TTS)

Kiểm soát tần suất người dùng có thể yêu cầu chuyển đổi văn bản thành giọng nói. Điều này giúp ngăn chặn:

  • Chi phí sử dụng API quá mức
  • Cạn kiệt tài nguyên máy chủ do tạo âm thanh
  • Lạm dụng tính năng TTS để thu thập dữ liệu

Được cấu hình thông qua tệp librechat.yaml với các giới hạn có thể tùy chỉnh theo từng IP và từng người dùng.

Giới hạn tốc độ Speech-to-Text (STT)

Kiểm soát tần suất người dùng có thể gửi âm thanh để chuyển đổi thành văn bản. Điều này giúp ngăn chặn:

  • Chi phí sử dụng API quá mức
  • Cạn kiệt tài nguyên máy chủ do xử lý âm thanh
  • Lạm dụng tính năng STT cho các dịch vụ phiên âm trái phép

Được cấu hình thông qua tệp librechat.yaml với các giới hạn có thể tùy chỉnh theo từng IP và từng người dùng.

Giới hạn tốc độ đặt lại mật khẩu

Kiểm soát tần suất người dùng có thể yêu cầu email đặt lại mật khẩu. Điều này giúp ngăn chặn:

  • Các cuộc tấn công email bombing
  • Lạm dụng hệ thống đặt lại mật khẩu
  • Sử dụng dịch vụ email quá mức

Giới hạn tốc độ xác minh email

Kiểm soát tần suất người dùng có thể yêu cầu gửi tin nhắn xác minh email. Điều này ngăn chặn:

  • Các cuộc tấn công spam thông qua hệ thống xác minh
  • Lạm dụng dịch vụ email
  • Cạn kiệt tài nguyên do các yêu cầu xác minh

Giới hạn tốc độ gọi công cụ (Tool Call Rate Limiting)

Kiểm soát tần suất người dùng có thể thực hiện các lệnh gọi công cụ/plugin. Điều này giúp ngăn chặn:

  • Sử dụng API quá mức từ các công cụ tích hợp
  • Lạm dụng các tích hợp dịch vụ bên ngoài
  • Cạn kiệt tài nguyên do xử lý công cụ

Giới hạn tốc độ truy cập hội thoại

Kiểm soát tần suất người dùng có thể truy cập hoặc cố gắng truy cập các cuộc trò chuyện. Điều này giúp ngăn chặn:

  • Các nỗ lực truy cập trái phép
  • Các cuộc tấn công thu thập dữ liệu (data scraping)
  • Truy vấn cơ sở dữ liệu quá mức

Bộ giới hạn tốc độ (Rate Limiters)

Các bộ giới hạn tốc độ hiện tại của dự án như sau (xem bên dưới phần thiết lập để biết các giá trị mặc định):

  • Giới hạn tốc độ đăng nhập và đăng ký
  • Optional: Giới hạn tin nhắn đồng thời (chỉ cho phép X tin nhắn cùng lúc trên mỗi người dùng)
  • Optional: Giới hạn tin nhắn (tần suất người dùng có thể gửi tin nhắn, có thể cấu hình theo IP và User)
  • Optional: Nhập giới hạn hội thoại (tần suất người dùng có thể nhập hội thoại, có thể cấu hình theo IP và User)
  • Optional: Giới hạn phân nhánh cuộc trò chuyện (tần suất người dùng có thể phân nhánh cuộc trò chuyện, có thể cấu hình theo IP và 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)

Để biết thêm chi tiết, hãy tham khảo hướng dẫn cấu hình được cung cấp tại đây: Automated Moderation

Hướng dẫn này thế nào?