RED
Chupei o segurança do meu prédio na garagem e ele encheu minha bucetinha de leite. Icegirlxx.
Links para download…
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/Hora | IP | Motivo | User Agent |
---|
Nenhuma atividade suspeita registrada.