@j03fr0st/pubg-ts
Version:
A comprehensive TypeScript wrapper for the PUBG API
112 lines • 3.26 kB
TypeScript
export interface SecurityConfig {
enableInputValidation: boolean;
enableApiKeySanitization: boolean;
logSecurityEvents: boolean;
strictMode: boolean;
}
export interface ValidationResult {
isValid: boolean;
sanitized?: string;
errors: string[];
warnings: string[];
}
export interface SecurityEvent {
type: 'input_validation' | 'api_key_exposure' | 'suspicious_activity' | 'rate_limit_exceeded';
severity: 'low' | 'medium' | 'high' | 'critical';
message: string;
context: Record<string, any>;
timestamp: number;
}
/**
* Comprehensive security utility for input validation, sanitization, and threat detection
*
* Provides production-ready security features including:
* - Input validation and sanitization
* - API key protection and masking
* - Security event logging and monitoring
* - Data leak prevention
* - SQL injection and XSS protection
*
* @example
* ```typescript
* const security = new SecurityManager({
* enableInputValidation: true,
* strictMode: true
* });
*
* // Validate and sanitize player names
* const result = security.validatePlayerName('player123');
* if (!result.isValid) {
* throw new Error(`Invalid player name: ${result.errors.join(', ')}`);
* }
*
* // Secure API key handling
* const maskedKey = security.maskApiKey('abcd-1234-efgh-5678');
* security.validateApiKey(apiKey);
* ```
*/
export declare class SecurityManager {
private config;
private securityEvents;
private suspiciousActivityCount;
private lastSecurityCheck;
private readonly sqlInjectionPatterns;
private readonly xssPatterns;
private readonly commandInjectionPatterns;
constructor(config?: Partial<SecurityConfig>);
/**
* Validate and sanitize player names
*/
validatePlayerName(playerName: string): ValidationResult;
/**
* Validate and sanitize match IDs
*/
validateMatchId(matchId: string): ValidationResult;
/**
* Validate API keys securely
*/
validateApiKey(apiKey: string): ValidationResult;
/**
* Safely mask API keys for logging
*/
maskApiKey(apiKey: string): string;
/**
* Validate URL parameters and query strings
*/
validateUrlParameter(param: string, paramName: string): ValidationResult;
/**
* Check for common security threats in input
*/
private checkForSecurityThreats;
/**
* Sanitize sensitive data for safe logging
*/
sanitizeForLogging(data: any): any;
/**
* Log security events
*/
private logSecurityEvent;
/**
* Get recent security events
*/
getSecurityEvents(limit?: number): SecurityEvent[];
/**
* Check overall security status
*/
getSecurityStatus(): {
status: 'secure' | 'warning' | 'critical';
suspiciousActivityCount: number;
recentEvents: number;
lastCheck: number;
};
/**
* Reset security counters (for testing or after addressing issues)
*/
resetSecurityCounters(): void;
/**
* Validate environment configuration for security
*/
validateEnvironmentSecurity(): ValidationResult;
}
export declare const securityManager: SecurityManager;
//# sourceMappingURL=security.d.ts.map