Skip to content

Security Features

Gameshield provides comprehensive security through game-based CAPTCHA challenges, risk scoring, and real-time analytics.

Core Security Features

Risk Scoring System

Gameshield employs a sophisticated risk scoring system that analyzes multiple factors:

typescript
interface RiskScore {
  score: number;        // 0-100, higher means more risky
  factors: RiskFactor[];
  confidence: number;   // 0-1, confidence in the score
  timestamp: number;
}

interface RiskFactor {
  name: string;         // Factor identifier
  weight: number;       // Impact on final score
  value: number;        // Factor-specific value
  threshold: number;    // Trigger threshold
}

Behavioral Analysis

  • Input patterns
  • Movement precision
  • Timing consistency
  • Error patterns
  • Game completion speed

Technical Indicators

  • Browser fingerprinting
  • Network patterns
  • Client environment
  • Device capabilities
  • Session characteristics

Malicious Activity Detection

Real-time monitoring for suspicious behavior:

typescript
interface MaliciousActivity {
  type: string;
  timestamp: number;
  riskScore: number;
  evidence: {
    behavioralFlags: string[];
    technicalFlags: string[];
    patterns: Pattern[];
  };
  response: {
    action: 'block' | 'challenge' | 'monitor';
    duration: number;
    reason: string;
  };
}

Detection Capabilities

  1. Bot Detection

    • Automated input detection
    • Pattern recognition
    • Timing analysis
    • Behavioral inconsistencies
  2. Attack Prevention

    • Brute force protection
    • Rate limiting
    • IP-based tracking
    • Session validation

Token Security

Secure token generation and validation:

typescript
interface VerificationToken {
  token: string;       // Encrypted token
  timestamp: number;   // Generation time
  metadata: {
    gameType: string;
    difficulty: string;
    completionTime: number;
    riskScore: number;
  };
  signature: string;   // Digital signature
}

Token Features

  • Encrypted payload
  • Time-based expiration
  • Digital signatures
  • Replay prevention
  • Metadata validation

Implementation

Basic Security Setup

typescript
const captcha = new CaptchaSDK({
  container: element,
  security: {
    riskScoring: true,
    tokenExpiry: 300,    // 5 minutes
    maxAttempts: 3,
    rateLimiting: true
  }
});

Advanced Configuration

typescript
const captcha = new CaptchaSDK({
  container: element,
  security: {
    riskScoring: {
      sensitivity: 'high',
      customFactors: [{
        name: 'custom_factor',
        weight: 0.5,
        threshold: 0.7
      }]
    },
    maliciousDetection: {
      autoBlock: true,
      blockDuration: 3600,
      notifyAdmin: true
    },
    tokenSecurity: {
      algorithm: 'ES256',
      rotateKeys: true,
      keyRotationInterval: 86400
    }
  }
});

Server-Side Verification

typescript
import { verifyToken, RiskAssessment } from '@gameshield/captcha-sdk/server';

async function validateRequest(token: string): Promise<boolean> {
  try {
    const result = await verifyToken(token);
    
    if (!result.valid) {
      return false;
    }

    // Check risk score
    if (result.riskScore > 70) {
      // High risk, require additional verification
      return requireAdditionalVerification(result);
    }

    // Check for suspicious patterns
    if (result.flags.length > 0) {
      // Log suspicious activity
      await logSuspiciousActivity(result);
    }

    return true;
  } catch (error) {
    console.error('Verification error:', error);
    return false;
  }
}

Analytics Integration

Security Events

Monitor security-related events:

typescript
const analyticsProvider = new CustomAnalyticsProvider({
  onSecurityEvent: (event) => {
    switch (event.type) {
      case 'high_risk_score':
        notifyAdmin(event);
        break;
      case 'malicious_activity':
        blockIP(event.data.ip);
        break;
      case 'token_validation_failure':
        logFailure(event);
        break;
    }
  }
});

Reporting

Access security metrics and reports:

typescript
interface SecurityReport {
  period: {
    start: number;
    end: number;
  };
  metrics: {
    totalAttempts: number;
    blockedAttempts: number;
    averageRiskScore: number;
    highRiskCount: number;
  };
  threats: {
    type: string;
    count: number;
    trend: number;
  }[];
}

Best Practices

Configuration

  1. Enable risk scoring
  2. Set appropriate thresholds
  3. Configure rate limiting
  4. Implement token expiration
  5. Use secure token validation

Monitoring

  1. Track risk scores
  2. Monitor failed attempts
  3. Analyze traffic patterns
  4. Review security logs
  5. Set up alerts

Response

  1. Block high-risk traffic
  2. Implement progressive challenges
  3. Rate limit suspicious IPs
  4. Log security events
  5. Notify administrators

Security Headers

Recommended security headers:

typescript
// Express.js example
app.use(helmet());
app.use(helmet.contentSecurityPolicy({
  directives: {
    defaultSrc: ["'self'"],
    scriptSrc: ["'self'", "'unsafe-inline'"],
    styleSrc: ["'self'", "'unsafe-inline'"],
    imgSrc: ["'self'", 'data:', 'https:'],
    connectSrc: ["'self'", 'https://api.gameshield.dev']
  }
}));

Rate Limiting

Implement rate limiting:

typescript
// Express.js example
import rateLimit from 'express-rate-limit';

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100, // limit each IP to 100 requests per windowMs
  handler: (req, res) => {
    res.status(429).json({
      error: 'Too many requests',
      retryAfter: res.getHeader('Retry-After')
    });
  }
});

app.use('/api/verify', limiter);

Error Handling

Handle security-related errors:

typescript
function handleSecurityError(error: SecurityError) {
  switch (error.code) {
    case 'TOKEN_EXPIRED':
      return {
        status: 401,
        message: 'Verification expired, please try again'
      };
    case 'INVALID_TOKEN':
      return {
        status: 400,
        message: 'Invalid verification token'
      };
    case 'RATE_LIMITED':
      return {
        status: 429,
        message: 'Too many attempts, please wait'
      };
    case 'HIGH_RISK':
      return {
        status: 403,
        message: 'Additional verification required'
      };
    default:
      return {
        status: 500,
        message: 'Security check failed'
      };
  }
}

Next Steps

  1. Review Analytics Setup
  2. Configure Admin Dashboard
  3. Explore Integration Examples

Released under the MIT License.