Só Gatinhas - Videos de Sexo - Novinhas Fazendo Sexo - Fotos - Caiu na Net - Lésbicas Transando - Ninfetas Nuas
/** * Enhanced Security Add-on for PIR reCAPTCHA Plugin * Adicione este código ao plugin principal para proteção extra contra bots */// Configurações de segurança avançada define('PIR_RATE_LIMIT_ATTEMPTS', 100); // Máximo de tentativas por IP por hora define('PIR_RATE_LIMIT_WINDOW', 3600); // Janela de tempo em segundos (1 hora) define('PIR_MIN_TIME_BETWEEN_REQUESTS', 2; // Segundos mínimos entre requests define('PIR_ENABLE_FINGERPRINTING', true); // Ativar fingerprinting do browser// 1. RATE LIMITING - Limitar tentativas por IP function pir_check_rate_limit($ip) { $transient_key = 'pir_rate_limit_' . md5($ip); $attempts = get_transient($transient_key); if ($attempts === false) { $attempts = []; } // Limpar tentativas antigas $current_time = time(); $attempts = array_filter($attempts, function($timestamp) use ($current_time) { return ($current_time - $timestamp) < PIR_RATE_LIMIT_WINDOW; }); // Verificar se excedeu o limite if (count($attempts) >= PIR_RATE_LIMIT_ATTEMPTS) { pir_log_debug("Rate limit excedido para IP: $ip"); return false; } // Adicionar nova tentativa $attempts[] = $current_time; set_transient($transient_key, $attempts, PIR_RATE_LIMIT_WINDOW); return true; }// 2. TIMING ATTACK PROTECTION - Verificar tempo mínimo entre requests function pir_check_timing_protection($ip) { $last_request_key = 'pir_last_request_' . md5($ip); $last_request = get_transient($last_request_key); if ($last_request !== false) { $time_diff = time() - $last_request; if ($time_diff < PIR_MIN_TIME_BETWEEN_REQUESTS) { pir_log_debug("Request muito rápido para IP: $ip (${time_diff}s)"); return false; } } set_transient($last_request_key, time(), 60); return true; }// 3. BROWSER FINGERPRINTING - Detectar bots por características do browser function pir_generate_browser_fingerprint() { $fingerprint_data = [ 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', 'accept_language' => $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '', 'accept_encoding' => $_SERVER['HTTP_ACCEPT_ENCODING'] ?? '', 'accept' => $_SERVER['HTTP_ACCEPT'] ?? '', 'connection' => $_SERVER['HTTP_CONNECTION'] ?? '', ]; return md5(json_encode($fingerprint_data)); }function pir_is_suspicious_fingerprint($fingerprint) { // Padrões suspeitos comuns em bots $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; $suspicious_patterns = [ '/bot/i', '/crawler/i', '/spider/i', '/scraper/i', '/curl/i', '/wget/i', '/python/i', '/requests/i', '/headless/i', '/phantom/i', '/selenium/i', ]; foreach ($suspicious_patterns as $pattern) { if (preg_match($pattern, $user_agent)) { pir_log_debug("User agent suspeito detectado: $user_agent"); return true; } } // Verificar se faltam headers importantes $required_headers = ['HTTP_ACCEPT', 'HTTP_ACCEPT_LANGUAGE', 'HTTP_ACCEPT_ENCODING']; foreach ($required_headers as $header) { if (empty($_SERVER[$header])) { pir_log_debug("Header ausente: $header"); return true; } } return false; }// 4. HONEYPOT FIELD - Campo oculto para detectar bots function pir_add_honeypot_field($container_html) { $honeypot = ''; return str_replace('
', $honeypot . '', $container_html); }// 5. JAVASCRIPT CHALLENGE - Verificar se JavaScript está realmente funcionando function pir_add_js_challenge() { $challenge = rand(1000, 9999); $expected = $challenge * 2; return [ 'challenge' => $challenge, 'expected' => $expected, 'js_code' => " " ]; }// 6. ENHANCED VERIFICATION FUNCTION function pir_enhanced_security_check() { $ip = pir_get_user_ip(); // 1. Rate limiting if (!pir_check_rate_limit($ip)) { return [ 'success' => false, 'error' => 'Muitas tentativas. Tente novamente em 1 hora.', 'code' => 'RATE_LIMIT_EXCEEDED' ]; } // 2. Timing protection if (!pir_check_timing_protection($ip)) { return [ 'success' => false, 'error' => 'Aguarde alguns segundos antes de tentar novamente.', 'code' => 'TOO_FAST' ]; } // 3. Honeypot check if (!empty($_POST['pir_website'])) { pir_log_debug("Honeypot ativado para IP: $ip"); return [ 'success' => false, 'error' => 'Verificação de segurança falhou.', 'code' => 'HONEYPOT_TRIGGERED' ]; } // 4. Browser fingerprinting if (PIR_ENABLE_FINGERPRINTING) { $fingerprint = pir_generate_browser_fingerprint(); if (pir_is_suspicious_fingerprint($fingerprint)) { return [ 'success' => false, 'error' => 'Browser não suportado.', 'code' => 'SUSPICIOUS_BROWSER' ]; } } // 5. JavaScript challenge $js_challenge = $_POST['js_challenge'] ?? ''; $expected_challenge = $_POST['js_expected'] ?? ''; if (empty($js_challenge) || $js_challenge !== $expected_challenge) { pir_log_debug("JavaScript challenge falhou para IP: $ip"); return [ 'success' => false, 'error' => 'JavaScript é necessário.', 'code' => 'JS_CHALLENGE_FAILED' ]; } return ['success' => true]; }// 7. SCORE ADJUSTMENT BASED ON BEHAVIOR function pir_adjust_recaptcha_score($original_score, $ip) { $adjusted_score = $original_score; // Reduzir score para IPs com histórico suspeito $suspicious_key = 'pir_suspicious_' . md5($ip); $suspicious_count = get_transient($suspicious_key) ?: 0; if ($suspicious_count > 0) { $penalty = min(0.3, $suspicious_count * 0.1); $adjusted_score -= $penalty; pir_log_debug("Score ajustado para IP $ip: $original_score -> $adjusted_score (penalidade: $penalty)"); } return max(0, $adjusted_score); }// 8. LOGGING SUSPICIOUS ACTIVITY function pir_log_suspicious_activity($ip, $reason, $data = []) { $log_entry = [ 'timestamp' => current_time('mysql'), 'ip' => $ip, 'reason' => $reason, 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', 'data' => $data ]; // Salvar em opção do WordPress (limitado aos últimos 100 registros) $logs = get_option('pir_suspicious_logs', []); array_unshift($logs, $log_entry); $logs = array_slice($logs, 0, 100); update_option('pir_suspicious_logs', $logs); pir_log_debug("Atividade suspeita registrada: $reason para IP $ip"); }// 9. ADMIN DASHBOARD PARA MONITORAMENTO function pir_add_admin_menu() { add_options_page( 'PIR Security Logs', 'PIR Security', 'manage_options', 'pir-security', 'pir_security_admin_page' ); } add_action('admin_menu', 'pir_add_admin_menu');function pir_security_admin_page() { $logs = get_option('pir_suspicious_logs', []); ?>

PIR reCAPTCHA - Logs de Segurança

Atividades Suspeitas Recentes

Data/HoraIPMotivoUser Agent

Nenhuma atividade suspeita registrada.