pulseengine_mcp_security/lib.rs
1//! Security middleware and validation for MCP servers
2//!
3//! This crate provides comprehensive security features for MCP servers including:
4//! - Input validation and sanitization
5//! - Rate limiting and request throttling
6//! - CORS policy management
7//! - Request size limits
8//! - SQL injection and XSS protection
9//!
10//! # Quick Start
11//!
12//! ```rust,no_run
13//! use pulseengine_mcp_security::{SecurityMiddleware, SecurityConfig, RequestValidator};
14//! use pulseengine_mcp_protocol::Request;
15//!
16//! #[tokio::main]
17//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
18//! // Create security configuration
19//! let config = SecurityConfig {
20//! max_request_size: 1024 * 1024, // 1MB limit
21//! rate_limit_requests_per_minute: 60,
22//! allowed_origins: vec!["https://example.com".to_string()],
23//! enable_ip_whitelist: true,
24//! allowed_ips: vec!["192.168.1.0/24".to_string()],
25//! ..Default::default()
26//! };
27//!
28//! // Create security middleware
29//! let security = SecurityMiddleware::new(config);
30//!
31//! // Validate requests
32//! let validator = RequestValidator::new();
33//!
34//! // In your request handler:
35//! // let is_valid = validator.validate_request(&request).await?;
36//!
37//! Ok(())
38//! }
39//! ```
40//!
41//! # Features
42//!
43//! - **Input validation**: Comprehensive request validation with schemas
44//! - **Rate limiting**: Per-IP and per-user rate limiting
45//! - **CORS management**: Configurable cross-origin policies
46//! - **Size limits**: Prevent DoS through large requests
47//! - **Injection protection**: SQL injection and script injection prevention
48//! - **Production hardened**: Battle-tested security measures
49
50pub mod config;
51pub mod middleware;
52pub mod validation;
53
54pub use config::SecurityConfig;
55pub use middleware::SecurityMiddleware;
56pub use validation::RequestValidator;
57
58/// Default security configuration
59pub fn default_config() -> SecurityConfig {
60 SecurityConfig::default()
61}