v0.7.7 - Prevent sql attacks and rate limiting on subscriptions
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
#define CHALLENGE_MAX_LENGTH 128
|
||||
#define AUTHENTICATED_PUBKEY_MAX_LENGTH 65 // 64 hex + null
|
||||
|
||||
// Enhanced per-session data with subscription management and NIP-42 authentication
|
||||
// Enhanced per-session data with subscription management, NIP-42 authentication, and rate limiting
|
||||
struct per_session_data {
|
||||
int authenticated;
|
||||
struct subscription* subscriptions; // Head of this session's subscription list
|
||||
@@ -30,6 +30,12 @@ struct per_session_data {
|
||||
int nip42_auth_required_events; // Whether NIP-42 auth is required for EVENT submission
|
||||
int nip42_auth_required_subscriptions; // Whether NIP-42 auth is required for REQ operations
|
||||
int auth_challenge_sent; // Whether challenge has been sent (0/1)
|
||||
|
||||
// Rate limiting for subscription attempts
|
||||
int failed_subscription_attempts; // Count of failed subscription attempts
|
||||
time_t last_failed_attempt; // Timestamp of last failed attempt
|
||||
time_t rate_limit_until; // Time until rate limiting expires
|
||||
int consecutive_failures; // Consecutive failed attempts for backoff
|
||||
};
|
||||
|
||||
// NIP-11 HTTP session data structure for managing buffer lifetime
|
||||
|
||||
Reference in New Issue
Block a user