ΠΠΎΠ±ΡΠΎΠ³ΠΎ Π΄Π½Ρ! Π ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠΈΠ½Π³Π° ΠΎΡΠ»ΠΎΠ²ΠΈΡΡ IP Π°Π΄ΡΠ΅ΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΠΈΠ·Π»ΠΈΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ°ΠΉΡ ΠΈ Π·Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ΅Π΄ΡΡΠ² Ρ
ΠΎΡΡΠΈΠ½Π³Π°, Π±ΡΠ΄Π΅Ρ Β«ΡΡΡΡ-ΡΡΡΡΒ» php ΠΊΠΎΠ΄Π°, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ².
ΠΠ²ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
- Π‘Π°ΠΉΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π° CMS WordPress
- Π₯ΠΎΡΡΠΈΠ½Π³ ΠΠ΅Π³Π΅Ρ (ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°, Π½ΠΎ ΡΠΊΡΠΈΠ½Ρ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°)
- WordPress ΡΠ°ΠΉΡ Π·Π°ΠΏΡΡΠ΅Π½ Π³Π΄Π΅ ΡΠΎ Π² Π½Π°ΡΠ°Π»Π΅ 2000 ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ²
- ΠΠ΅ΡΡΠΈΡ PHP 7.2
- WP ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ
- Π‘ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡ ΡΠ°ΠΉΡ Π½Π°ΡΠ°Π» Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° MySQL ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ Ρ ΠΎΡΡΠΈΠ½Π³Π°. ΠΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΡΡΠ°Π»ΠΎ 120% ΠΎΡ Π½ΠΎΡΠΌΡ Π½Π° ΡΡΡΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ
- ΠΠΎ Π΄Π°Π½Π½ΡΠΌ Π―Π½Π΄Π΅ΠΊΡ. ΠΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΡ ΠΏΠΎΡΠ΅ΡΠ°Π΅Ρ 100-200 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π² ΡΡΡΠΊΠΈ
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ:
- ΠΡΠΈΡΠ΅Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ ΠΎΡ Π½Π°ΠΊΠΎΠΏΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΌΡΡΠΎΡΠ°
- ΠΡΠΊΠ»ΡΡΠ΅Π½Ρ Π½Π΅ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΡΠ±ΡΠ°Π½Ρ ΡΡΠ°ΡΡΠΊΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°
ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ(ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ β Π½ΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π² 120% ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° Π±ΡΠ»Π° Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° ΠΈ ΠΌΠΎΠ³Π»Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠΈ.
Π’ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ Ρ ΠΎΡΡΠΈΠ½Π³Π°
Π ΡΠΎΠΏΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΉΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ΄ΡΡ ΡΠ΅ΡΡ, ΡΡΡΡ Π½ΠΈΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΡΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΡ ΠΆΠ΅ cms ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΡΡ ΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΡ, Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠ½Π°Π»ΠΈΠ·
- ΠΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅Π΄Π΅Π»Ρ (Π±Π»Π°Π³ΠΎ Ρ ΠΎΡΡΠΈΠ½Π³ Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠ½Π΅ Π½ΠΈ ΡΠ°Π·Ρ Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΈ ΠΌΠ΅Π½Ρ ΠΎΡΠΊΠ»ΡΡΠ°Ρ)
- ΠΡΠ» Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π·Π°ΡΠ΅ΠΌ Π±ΡΠ»Π° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΠ ΠΈ ΡΠΈΠΏ ΡΠ°Π±Π»ΠΈΡ
- ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ AWStats (ΠΎΠ½ ΠΊΡΡΠ°ΡΠΈ ΠΏΠΎΠΌΠΎΠ³ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ°ΠΌΡΠΉ Π·Π»ΠΎΠΉ IP Π°Π΄ΡΠ΅Ρ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΠΊΠ°
- ΠΠ΅ΡΡΠΈΠΊΠ° β ΠΌΠ΅ΡΡΠΈΠΊΠ° Π΄Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ Π»ΡΠ΄ΡΡ , Π° Π½Π΅ ΠΎ Π±ΠΎΡΠ°Ρ
- ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ WP, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅ΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Π΅ΠΉ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΡΡΡΠ°Π½Π΅ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠΌ
- Π‘ΠΎΠ²ΡΠ΅ΠΌ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π·Π°ΠΊΡΡΡΡ ΡΠ°ΠΉΡ Π½Π° ΡΡΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ Β«ΠΡ Π½Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈΒ» β ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΡΠΏΠ°Π»Π°, Π½ΠΎ Π½Π΅ Π΄ΠΎ 0-Π»Π΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡ WP Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° Ρ ΡΠΊΠ°Ρ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡ ΡΠ²ΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ β Π»ΠΈΠ±ΠΎ Β«Ρ ΡΠΊΠ°Β», Π° Π΄ΠΎ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Β«Ρ ΡΠΊΠ°Β» ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π½Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΠ
ΠΠ΄Π΅Ρ
- ΠΡΡΠΈΡΠ»ΠΈΡΡ IP Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- ΠΠ°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ°ΠΉΡΡ
- ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΡΡ
- ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Β«Deny fromΒ» Π² ΡΠ°ΠΉΠ»Π΅ .htaccess
- ΠΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π²ΡΠΎΠ΄Π΅ iptables ΠΈ ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ Nginx Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ, ΠΈΠ±ΠΎ ΠΏΠΈΡΡ ΠΏΡΠΎ Ρ ΠΎΡΡΠΈΠ½Π³
ΠΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ΄Π΅Ρ, Π·Π½Π°ΡΠΈΡ Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π±Π΅Π· ΡΡΠΎΠ³ΠΎβ¦
- Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
CREATE TABLE `wp_visiters_bot` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NULL DEFAULT NULL, `browser` VARCHAR(500) NULL DEFAULT NULL, `cnt` INT(11) NULL DEFAULT NULL, `request` TEXT NULL, `input` TEXT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='ΠΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1;
CREATE TABLE `wp_visiters_bot_blocked` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NOT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΆΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=59;
CREATE TABLE `wp_visiters_bot_history` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(300) NULL DEFAULT NULL, `browser` VARCHAR(500) NULL DEFAULT NULL, `cnt` INT(11) NULL DEFAULT NULL, `data_update` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `data_add` DATETIME NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `ip` (`ip`) ) COMMENT='ΠΡΡΠΎΡΠΈΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°' COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1;
- Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠΎΠ΄. ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ² Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π²Π΅ΡΡΠΈ ΠΈΡΡΠΎΡΠΈΡ Π΄Π»Ρ Π΄Π΅Π±Π°Π³Π°.
ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π°, Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ IP Π°Π΄ΡΠ΅ΡΠΎΠ²
<?php if (!defined('ABSPATH')) { return; } global $wpdb; /** * ΠΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ IP Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ * @return boolean */ function coderun_get_user_ip() { $client_ip = ''; $address_headers = array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR', ); foreach ($address_headers as $header) { if (array_key_exists($header, $_SERVER)) { $address_chain = explode(',', $_SERVER[$header]); $client_ip = trim($address_chain[0]); break; } } if (!$client_ip) { return ''; } if ('0.0.0.0' === $client_ip || '::' === $client_ip || $client_ip == 'unknown') { return ''; } return $client_ip; } $ip = esc_sql(coderun_get_user_ip()); // IP Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ if (empty($ip)) {// ΠΠ΅Ρ IP, Π½Ρ ΠΈ ΠΈΠ΄ΠΈΡΠ΅ Π»Π΅ΡΠΎΠΌ... header('Content-type: application/json;'); die('Big big bolt....'); } $browser = esc_sql($_SERVER['HTTP_USER_AGENT']); //ΠΠ°Π½Π½ΡΠ΅ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π±ΡΠ°ΡΠ·Π΅ΡΠ° $request = esc_sql(wp_json_encode($_REQUEST)); //ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΊ ΡΠ°ΠΉΡΡ $input = esc_sql(file_get_contents('php://input')); //Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, Π΅ΡΠ»ΠΈ Π±ΡΠ»ΠΎ $cnt = 1; //ΠΠ°ΠΏΡΠΎΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠ½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌΠΈ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ $query = <<<EOT INSERT INTO wp_visiters_bot (`ip`,`browser`,`cnt`,`request`,`input`) VALUES ('{$ip}','{$browser}','{$cnt}','{$request}','$input') ON DUPLICATE KEY UPDATE cnt=cnt+1,request=VALUES(request),input=VALUES(input),browser=VALUES(browser) EOT; //ΠΠ°ΠΏΡΠΎΡ Π΄Π»Ρ ΠΈΡΡΠΎΡΠΈΠΈ $query2 = <<<EOT INSERT INTO wp_visiters_bot_history (`ip`,`browser`,`cnt`) VALUES ('{$ip}','{$browser}','{$cnt}') ON DUPLICATE KEY UPDATE cnt=cnt+1,browser=VALUES(browser) EOT; $wpdb->query($query); $wpdb->query($query2);
Π‘ΡΡΡ ΠΊΠΎΠ΄Π° Π² ΡΠΎΠΌ ΡΡΠΎ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ IP Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠ»ΠΈ ip ΡΠΆΠ΅ Π΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ cnt (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠ°ΠΉΡΡ)
- Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΠ°ΡΠ½ΠΎΠ΅β¦ Π‘Π΅ΠΉΡΠ°Ρ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ³ΡΡ Π·Π° ΠΌΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈΡ π
Π§ΡΠΎ Π±Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π° Π² Π³Π»Π°Π²Π½ΡΠΉ ΡΠ°ΠΉΠ» WordPress β wp-load.php. ΠΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°ΠΉΠ» ΡΠ΄ΡΠ° ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $wpdb
ΠΡΠ°ΠΊ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΎ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ IP Π°Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Ρ Π½Π°Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ Ρ ΠΊΡΡΠΆΠΊΠΎΠΉ ΠΊΠΎΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°Π΅ΠΌ ΡΡΠ΄Π° ΡΠ°Π· Π² 5-Ρ ΠΌΠΈΠ½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½Ρ
ΠΠ°Π»ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π»ΠΈ Β«Π²ΡΠ΅Π΄Π½ΡΠΉΒ» IP, ΠΎΡΠΊΡΡΠ»ΠΈ ΡΠ°ΠΉΠ» .htaccess ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π°
Order allow,deny
Allow from all
# start_auto_deny_list
Deny from 94.242.55.248
# end_auto_deny_list
ΠΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ 94.242.55.248 β Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΡΡ ΠΈ Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΠ
ΠΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠ°ΠΊ ΡΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠ°Π²Π΅Π΄Π½ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅, Π΄Π° ΠΈ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΊΠΎΠ΄ Π·Π°Π΄ΡΠΌΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ CRON ΠΊΠ°ΠΆΠ΄ΡΠ΅ 30 ΠΌΠΈΠ½ΡΡ:
ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ .htaccess
<?php
/**
* Π€Π°ΠΉΠ» Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΏΠΎ IP Π°Π΄ΡΠ΅ΡΡ
* ΠΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· CRON
*/
if (empty($_REQUEST['key'])) {
die('Hello');
}
require('wp-load.php');
global $wpdb;
$limit_cnt = 70; //ΠΠΈΠΌΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ±ΠΈΡΠ°ΡΡ
$deny_table = $wpdb->get_results("SELECT * FROM wp_visiters_bot WHERE cnt>{$limit_cnt}");
$new_blocked = [];
$exclude_ip = [
'87.236.16.70'//Π°Π΄ΡΠ΅Ρ Ρ
ΠΎΡΡΠΈΠ½Π³Π°
];
foreach ($deny_table as $result) {
if (in_array($result->ip, $exclude_ip)) {
continue;
}
$wpdb->insert('wp_visiters_bot_blocked', ['ip' => $result->ip], ['%s']);
}
$deny_table_blocked = $wpdb->get_results("SELECT * FROM wp_visiters_bot_blocked");
foreach ($deny_table_blocked as $blocked) {
$new_blocked[] = $blocked->ip;
}
//ΠΡΠΈΡΡΠΊΠ° ΡΠ°Π±Π»ΠΈΡΡ
$wpdb->query("DELETE FROM wp_visiters_bot");
//echo '<pre>';print_r($new_blocked);echo '</pre>';
$file = '.htaccess';
$start_searche_tag = 'start_auto_deny_list';
$end_searche_tag = 'end_auto_deny_list';
$handle = @fopen($file, "r");
if ($handle) {
$replace_string = '';//Π’Π΅ΡΡ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΡΠ°ΠΉΠ» .htaccess
$target_content = false; //Π€Π»Π°Π³ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ ΡΡΠ°ΡΡΠΊΠ° ΠΊΠΎΠ΄Π°
while (($buffer = fgets($handle, 4096)) !== false) {
if (stripos($buffer, 'start_auto_deny_list') !== false) {
$target_content = true;
continue;
}
if (stripos($buffer, 'end_auto_deny_list') !== false) {
$target_content = false;
continue;
}
if ($target_content) {
$replace_string .= $buffer;
}
}
if (!feof($handle)) {
echo "ΠΡΠΈΠ±ΠΊΠ°: fgets() Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΏΠΎΡΠ΅ΡΠΏΠ΅Π» Π½Π΅ΡΠ΄Π°ΡΡn";
}
fclose($handle);
}
//Π’Π΅ΠΊΡΡΠΈΠΉ ΡΠ°ΠΉΠ» .htaccess
$content = file_get_contents($file);
$content = str_replace($replace_string, '', $content);
//ΠΡΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ .htaccess
file_put_contents($file, $content);
//ΠΠ°ΠΏΠΈΡΡ Π½ΠΎΠ²ΡΡ
Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
$str = "# {$start_searche_tag}" . PHP_EOL;
foreach ($new_blocked as $key => $value) {
$str .= "Deny from {$value}" . PHP_EOL;
}
file_put_contents($file, str_replace("# {$start_searche_tag}", $str, file_get_contents($file)));
ΠΠΎΠ΄ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ ΠΈ Π³Π»Π°Π²Π½Π°Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅Ρ Π² ΡΠΎΠΌ ΡΡΠΎ Π±Ρ Π²Π·ΡΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ² Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ Π²ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π±Π»ΠΎΠΊΠΈΡΠ²ΠΎΠΊΠΈ Π² ΡΠ°ΠΉΠ» .htaccess ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ
# start_auto_deny_list ΠΈ # end_auto_deny_list
Π’Π΅ΠΏΠ΅ΡΡ Β«Π²ΡΠ΅Π΄Π½ΡΠ΅Β» ip Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ ΡΠ°ΠΌΠΈ ΡΠΎΠ±ΠΎΠΉ, Π° ΡΠ°ΠΉΠ» .htaccess Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Order allow,deny
Allow from all
# start_auto_deny_list
Deny from 94.242.55.248
Deny from 207.46.13.122
Deny from 66.249.64.164
Deny from 54.209.162.70
Deny from 40.77.167.86
Deny from 54.146.43.69
Deny from 207.46.13.168
....... Π½ΠΈΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ°
# end_auto_deny_list
Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Ρ ΠΎΡΡΠΈΠ½Π³ ΠΏΠ°Π½Π΅Π»ΠΈ:
PS: ΠΠ°ΡΠ΅ΡΠΈΠ°Π» Π°Π²ΡΠΎΡΡΠΊΠΈΠΉ, Ρ
ΠΎΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΡ Ρ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½Π° ΡΠ²ΠΎΡΠΌ ΡΠ°ΠΉΡΠ΅ Π½ΠΎ Π½Π° Habre ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com