function limit_excessive_requests() { // °ü¸®ÀÚ Á¦¿Ü (·Î±×ÀÎÇÑ »ç¿ëÀÚ°¡ °ü¸®ÀÚ¸é Â÷´Ü ·ÎÁ÷ ½ÇÇà ¾È ÇÔ) if (is_user_logged_in() && current_user_can('manage_options')) { return; } // ¼³Á¤ °ª $max_requests = 20; // Çã¿ëµÇ´Â ÃÖ´ë ¿äû ¼ö $time_frame = 60; // °¨½Ã ½Ã°£ (ÃÊ) - ±âº» 1ºÐ $block_time = 600; // Â÷´Ü ½Ã°£ (ÃÊ) - ±âº» 10ºÐ // ÇöÀç ¹æ¹®ÀÚ IP °¡Á®¿À±â $visitor_ip = $_SERVER['REMOTE_ADDR']; $time_now = time(); // Â÷´ÜµÈ »ç¿ëÀÚ ¸ñ·ÏÀ» ÀúÀåÇÒ ¿É¼Ç (¿öµåÇÁ·¹½º µ¥ÀÌÅͺ£À̽º È°¿ë) $blocked_ips = get_option('blocked_ips', []); // Â÷´ÜµÈ IPÀÎÁö È®ÀÎ if (isset($blocked_ips[$visitor_ip]) && $blocked_ips[$visitor_ip] > $time_now) { wp_die('

?? °úµµÇÑ Á¢¼ÓÀ¸·Î ÀÎÇØ Â÷´ÜµÇ¾ú½À´Ï´Ù. Àá½Ã ÈÄ ´Ù½Ã ½ÃµµÇϼ¼¿ä.

'); } // ¹æ¹® ±â·Ï ÀúÀåÇÒ ¿É¼Ç (¿öµåÇÁ·¹½º µ¥ÀÌÅͺ£À̽º È°¿ë) $visit_logs = get_option('visit_logs', []); // ÇöÀç IPÀÇ ¹æ¹® ±â·Ï ºÒ·¯¿À±â if (!isset($visit_logs[$visitor_ip])) { $visit_logs[$visitor_ip] = []; } // ÇöÀç ½Ã°£ ±âÁØÀ¸·Î time_frame ³»ÀÇ ±â·Ï¸¸ À¯Áö $visit_logs[$visitor_ip] = array_filter($visit_logs[$visitor_ip], function ($timestamp) use ($time_now, $time_frame) { return ($time_now - $timestamp) < $time_frame; }); // ÇöÀç ¿äû ±â·Ï Ãß°¡ $visit_logs[$visitor_ip][] = $time_now; // ¿äû Ƚ¼ö°¡ Á¦ÇÑÀ» ÃÊ°úÇϸé Â÷´Ü if (count($visit_logs[$visitor_ip]) > $max_requests) { $blocked_ips[$visitor_ip] = $time_now + $block_time; // BLOCK_TIME µ¿¾È Â÷´Ü update_option('blocked_ips', $blocked_ips); wp_die('

?? °úµµÇÑ Á¢¼ÓÀ¸·Î ÀÎÇØ Â÷´ÜµÇ¾ú½À´Ï´Ù. 10ºÐ ÈÄ ´Ù½Ã ½ÃµµÇϼ¼¿ä.

'); } // ¾÷µ¥ÀÌÆ®µÈ ¹æ¹® ±â·Ï ÀúÀå update_option('visit_logs', $visit_logs); } add_action('init', 'limit_excessive_requests');