Version Description
- Fixed various captcha bugs: woocommerce lost password page, custom login form page, etc
Download this release
Release Info
Developer | wpsolutions |
Plugin | ![]() |
Version | 4.3.9.2 |
Comparing to | |
See all releases |
Code changes from version 4.3.9.1 to 4.3.9.2
- admin/wp-security-brute-force-menu.php +29 -15
- classes/grade-system/wp-security-feature-item-manager.php +17 -0
- classes/wp-security-captcha.php +8 -7
- classes/wp-security-configure-settings.php +2 -0
- classes/wp-security-general-init-tasks.php +108 -30
- classes/wp-security-user-login.php +1 -1
- classes/wp-security-user-registration.php +2 -2
- readme.txt +3 -0
- wp-security-core.php +5 -1
- wp-security.php +1 -1
admin/wp-security-brute-force-menu.php
CHANGED
@@ -531,6 +531,7 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
|
|
531 |
$aio_wp_security->configs->set_value('aiowps_enable_login_captcha',isset($_POST["aiowps_enable_login_captcha"])?'1':'');
|
532 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_login_captcha',isset($_POST["aiowps_enable_woo_login_captcha"])?'1':'');
|
533 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_register_captcha',isset($_POST["aiowps_enable_woo_register_captcha"])?'1':'');
|
|
|
534 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha',isset($_POST["aiowps_enable_custom_login_captcha"])?'1':'');
|
535 |
$aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha',isset($_POST["aiowps_enable_lost_password_captcha"])?'1':'');
|
536 |
|
@@ -613,6 +614,25 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
|
|
613 |
</td>
|
614 |
</tr>
|
615 |
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
616 |
</div></div>
|
617 |
<div class="postbox">
|
618 |
<h3 class="hndle"><label for="title"><?php _e('Custom Login Form Captcha Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
@@ -651,33 +671,27 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
|
|
651 |
</table>
|
652 |
<hr>
|
653 |
<?php
|
654 |
-
$aiowps_feature_mgr->output_feature_details_badge("woo-
|
655 |
?>
|
656 |
<table class="form-table">
|
657 |
<tr valign="top">
|
658 |
-
<th scope="row"><?php _e('Enable Captcha On Woocommerce
|
659 |
<td>
|
660 |
-
<input name="
|
661 |
-
<span class="description"><?php _e('Check this if you want to insert captcha on a Woocommerce
|
662 |
</td>
|
663 |
</tr>
|
664 |
</table>
|
665 |
-
|
666 |
-
<div class="postbox">
|
667 |
-
<h3 class="hndle"><label for="title"><?php _e('Lost Password Form Captcha Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
668 |
-
<div class="inside">
|
669 |
<?php
|
670 |
-
|
671 |
-
global $aiowps_feature_mgr;
|
672 |
-
$aiowps_feature_mgr->output_feature_details_badge("lost-password-captcha");
|
673 |
?>
|
674 |
-
|
675 |
<table class="form-table">
|
676 |
<tr valign="top">
|
677 |
-
<th scope="row"><?php _e('Enable Captcha On
|
678 |
<td>
|
679 |
-
<input name="
|
680 |
-
<span class="description"><?php _e('Check this if you want to insert
|
681 |
</td>
|
682 |
</tr>
|
683 |
</table>
|
531 |
$aio_wp_security->configs->set_value('aiowps_enable_login_captcha',isset($_POST["aiowps_enable_login_captcha"])?'1':'');
|
532 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_login_captcha',isset($_POST["aiowps_enable_woo_login_captcha"])?'1':'');
|
533 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_register_captcha',isset($_POST["aiowps_enable_woo_register_captcha"])?'1':'');
|
534 |
+
$aio_wp_security->configs->set_value('aiowps_enable_woo_lostpassword_captcha',isset($_POST["aiowps_enable_woo_lostpassword_captcha"])?'1':'');
|
535 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha',isset($_POST["aiowps_enable_custom_login_captcha"])?'1':'');
|
536 |
$aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha',isset($_POST["aiowps_enable_lost_password_captcha"])?'1':'');
|
537 |
|
614 |
</td>
|
615 |
</tr>
|
616 |
</table>
|
617 |
+
</div></div>
|
618 |
+
<div class="postbox">
|
619 |
+
<h3 class="hndle"><label for="title"><?php _e('Lost Password Form Captcha Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
620 |
+
<div class="inside">
|
621 |
+
<?php
|
622 |
+
//Display security info badge
|
623 |
+
global $aiowps_feature_mgr;
|
624 |
+
$aiowps_feature_mgr->output_feature_details_badge("lost-password-captcha");
|
625 |
+
?>
|
626 |
+
|
627 |
+
<table class="form-table">
|
628 |
+
<tr valign="top">
|
629 |
+
<th scope="row"><?php _e('Enable Captcha On Lost Password Page', 'all-in-one-wp-security-and-firewall')?>:</th>
|
630 |
+
<td>
|
631 |
+
<input name="aiowps_enable_lost_password_captcha" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_lost_password_captcha')=='1') echo ' checked="checked"'; ?> value="1"/>
|
632 |
+
<span class="description"><?php _e('Check this if you want to insert a captcha form on the lost password page', 'all-in-one-wp-security-and-firewall'); ?></span>
|
633 |
+
</td>
|
634 |
+
</tr>
|
635 |
+
</table>
|
636 |
</div></div>
|
637 |
<div class="postbox">
|
638 |
<h3 class="hndle"><label for="title"><?php _e('Custom Login Form Captcha Settings', 'all-in-one-wp-security-and-firewall'); ?></label></h3>
|
671 |
</table>
|
672 |
<hr>
|
673 |
<?php
|
674 |
+
$aiowps_feature_mgr->output_feature_details_badge("woo-lostpassword-captcha");
|
675 |
?>
|
676 |
<table class="form-table">
|
677 |
<tr valign="top">
|
678 |
+
<th scope="row"><?php _e('Enable Captcha On Woocommerce Lost Password Form', 'all-in-one-wp-security-and-firewall')?>:</th>
|
679 |
<td>
|
680 |
+
<input name="aiowps_enable_woo_lostpassword_captcha" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_woo_lostpassword_captcha')=='1') echo ' checked="checked"'; ?> value="1"/>
|
681 |
+
<span class="description"><?php _e('Check this if you want to insert captcha on a Woocommerce lost password form', 'all-in-one-wp-security-and-firewall'); ?></span>
|
682 |
</td>
|
683 |
</tr>
|
684 |
</table>
|
685 |
+
<hr>
|
|
|
|
|
|
|
686 |
<?php
|
687 |
+
$aiowps_feature_mgr->output_feature_details_badge("woo-register-captcha");
|
|
|
|
|
688 |
?>
|
|
|
689 |
<table class="form-table">
|
690 |
<tr valign="top">
|
691 |
+
<th scope="row"><?php _e('Enable Captcha On Woocommerce Registration Form', 'all-in-one-wp-security-and-firewall')?>:</th>
|
692 |
<td>
|
693 |
+
<input name="aiowps_enable_woo_register_captcha" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_enable_woo_register_captcha')=='1') echo ' checked="checked"'; ?> value="1"/>
|
694 |
+
<span class="description"><?php _e('Check this if you want to insert captcha on a Woocommerce registration form', 'all-in-one-wp-security-and-firewall'); ?></span>
|
695 |
</td>
|
696 |
</tr>
|
697 |
</table>
|
classes/grade-system/wp-security-feature-item-manager.php
CHANGED
@@ -44,6 +44,7 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
44 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("user-login-captcha", __("Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic);
|
45 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("custom-login-captcha", __("Custom Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic);
|
46 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("woo-login-captcha", __("Woo Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
|
|
47 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("woo-register-captcha", __("Woo Register Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
48 |
//Lost Password Captcha
|
49 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("lost-password-captcha", __("Lost Password Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
@@ -203,6 +204,10 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
203 |
{
|
204 |
$this->check_woo_login_captcha_feature($item);
|
205 |
}
|
|
|
|
|
|
|
|
|
206 |
if($item->feature_id == "woo-register-captcha")
|
207 |
{
|
208 |
$this->check_woo_register_captcha_feature($item);
|
@@ -458,6 +463,18 @@ class AIOWPSecurity_Feature_Item_Manager
|
|
458 |
}
|
459 |
}
|
460 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
461 |
function check_woo_register_captcha_feature($item)
|
462 |
{
|
463 |
global $aio_wp_security;
|
44 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("user-login-captcha", __("Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic);
|
45 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("custom-login-captcha", __("Custom Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_4, $this->sec_level_basic);
|
46 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("woo-login-captcha", __("Woo Login Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
47 |
+
$this->feature_items[] = new AIOWPSecurity_Feature_Item("woo-lostpassword-captcha", __("Woo Lost Password Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
48 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("woo-register-captcha", __("Woo Register Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
49 |
//Lost Password Captcha
|
50 |
$this->feature_items[] = new AIOWPSecurity_Feature_Item("lost-password-captcha", __("Lost Password Captcha", "all-in-one-wp-security-and-firewall"), $this->feature_point_2, $this->sec_level_basic);
|
204 |
{
|
205 |
$this->check_woo_login_captcha_feature($item);
|
206 |
}
|
207 |
+
if($item->feature_id == "woo-lostpassword-captcha")
|
208 |
+
{
|
209 |
+
$this->check_woo_lostpassword_captcha_feature($item);
|
210 |
+
}
|
211 |
if($item->feature_id == "woo-register-captcha")
|
212 |
{
|
213 |
$this->check_woo_register_captcha_feature($item);
|
463 |
}
|
464 |
}
|
465 |
|
466 |
+
function check_woo_lostpassword_captcha_feature($item)
|
467 |
+
{
|
468 |
+
global $aio_wp_security;
|
469 |
+
if ($aio_wp_security->configs->get_value('aiowps_enable_woo_lostpassword_captcha') == '1') {
|
470 |
+
$item->set_feature_status($this->feature_active);
|
471 |
+
}
|
472 |
+
else
|
473 |
+
{
|
474 |
+
$item->set_feature_status($this->feature_inactive);
|
475 |
+
}
|
476 |
+
}
|
477 |
+
|
478 |
function check_woo_register_captcha_feature($item)
|
479 |
{
|
480 |
global $aio_wp_security;
|
classes/wp-security-captcha.php
CHANGED
@@ -146,14 +146,15 @@ class AIOWPSecurity_Captcha
|
|
146 |
|
147 |
|
148 |
/**
|
149 |
-
*
|
150 |
-
* Returns
|
|
|
151 |
* @global type $aio_wp_security
|
152 |
* @return boolean
|
153 |
*/
|
154 |
-
function
|
155 |
global $aio_wp_security;
|
156 |
-
if($aio_wp_security->configs->get_value('
|
157 |
//Google reCaptcha enabled
|
158 |
if (array_key_exists('g-recaptcha-response', $_POST)) {
|
159 |
$g_recaptcha_response = isset($_POST['g-recaptcha-response'])?sanitize_text_field($_POST['g-recaptcha-response']):'';
|
@@ -162,11 +163,11 @@ class AIOWPSecurity_Captcha
|
|
162 |
return false; // wrong answer was entered
|
163 |
}
|
164 |
}else {
|
165 |
-
//
|
166 |
return false;
|
167 |
}
|
168 |
}else if($aio_wp_security->configs->get_value('aiowps_enable_login_captcha')) {
|
169 |
-
//
|
170 |
if (array_key_exists('aiowps-captcha-answer', $_POST)) {
|
171 |
$captcha_answer = isset($_POST['aiowps-captcha-answer'])?sanitize_text_field($_POST['aiowps-captcha-answer']):'';
|
172 |
|
@@ -175,7 +176,7 @@ class AIOWPSecurity_Captcha
|
|
175 |
return false; // wrong answer was entered
|
176 |
}
|
177 |
} else {
|
178 |
-
//
|
179 |
return false;
|
180 |
}
|
181 |
}
|
146 |
|
147 |
|
148 |
/**
|
149 |
+
* Verifies the math or Google recaptcha v2 forms
|
150 |
+
* Returns TRUE if correct answer.
|
151 |
+
* Returns FALSE on wrong captcha result or missing data.
|
152 |
* @global type $aio_wp_security
|
153 |
* @return boolean
|
154 |
*/
|
155 |
+
function verify_captcha_submit () {
|
156 |
global $aio_wp_security;
|
157 |
+
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')){
|
158 |
//Google reCaptcha enabled
|
159 |
if (array_key_exists('g-recaptcha-response', $_POST)) {
|
160 |
$g_recaptcha_response = isset($_POST['g-recaptcha-response'])?sanitize_text_field($_POST['g-recaptcha-response']):'';
|
163 |
return false; // wrong answer was entered
|
164 |
}
|
165 |
}else {
|
166 |
+
// Expected captcha field in $_POST but got none!
|
167 |
return false;
|
168 |
}
|
169 |
}else if($aio_wp_security->configs->get_value('aiowps_enable_login_captcha')) {
|
170 |
+
// math captcha is enabled
|
171 |
if (array_key_exists('aiowps-captcha-answer', $_POST)) {
|
172 |
$captcha_answer = isset($_POST['aiowps-captcha-answer'])?sanitize_text_field($_POST['aiowps-captcha-answer']):'';
|
173 |
|
176 |
return false; // wrong answer was entered
|
177 |
}
|
178 |
} else {
|
179 |
+
// Expected captcha field in $_POST but got none!
|
180 |
return false;
|
181 |
}
|
182 |
}
|
classes/wp-security-configure-settings.php
CHANGED
@@ -47,6 +47,7 @@ class AIOWPSecurity_Configure_Settings
|
|
47 |
$aio_wp_security->configs->set_value('aiowps_enable_login_captcha','');//Checkbox
|
48 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha','');//Checkbox
|
49 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_login_captcha','');//Checkbox
|
|
|
50 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_register_captcha','');//Checkbox
|
51 |
$aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha','');//Checkbox
|
52 |
$aio_wp_security->configs->set_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved
|
@@ -203,6 +204,7 @@ class AIOWPSecurity_Configure_Settings
|
|
203 |
$aio_wp_security->configs->add_value('aiowps_enable_custom_login_captcha','');//Checkbox
|
204 |
$aio_wp_security->configs->add_value('aiowps_enable_woo_login_captcha','');//Checkbox
|
205 |
$aio_wp_security->configs->add_value('aiowps_enable_woo_register_captcha','');//Checkbox
|
|
|
206 |
$aio_wp_security->configs->add_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved
|
207 |
|
208 |
//User registration
|
47 |
$aio_wp_security->configs->set_value('aiowps_enable_login_captcha','');//Checkbox
|
48 |
$aio_wp_security->configs->set_value('aiowps_enable_custom_login_captcha','');//Checkbox
|
49 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_login_captcha','');//Checkbox
|
50 |
+
$aio_wp_security->configs->set_value('aiowps_enable_woo_lostpassword_captcha','');//Checkbox
|
51 |
$aio_wp_security->configs->set_value('aiowps_enable_woo_register_captcha','');//Checkbox
|
52 |
$aio_wp_security->configs->set_value('aiowps_enable_lost_password_captcha','');//Checkbox
|
53 |
$aio_wp_security->configs->set_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved
|
204 |
$aio_wp_security->configs->add_value('aiowps_enable_custom_login_captcha','');//Checkbox
|
205 |
$aio_wp_security->configs->add_value('aiowps_enable_woo_login_captcha','');//Checkbox
|
206 |
$aio_wp_security->configs->add_value('aiowps_enable_woo_register_captcha','');//Checkbox
|
207 |
+
$aio_wp_security->configs->add_value('aiowps_enable_woo_lostpassword_captcha','');//Checkbox
|
208 |
$aio_wp_security->configs->add_value('aiowps_captcha_secret_key',AIOWPSecurity_Utility::generate_alpha_numeric_random_string(20));//Hidden secret value which will be used to do some captcha processing. This will be assigned a random string generated when captcha settings saved
|
209 |
|
210 |
//User registration
|
classes/wp-security-general-init-tasks.php
CHANGED
@@ -120,21 +120,44 @@ class AIOWPSecurity_General_Init_Tasks
|
|
120 |
}
|
121 |
|
122 |
//For woo form captcha features
|
123 |
-
$
|
124 |
if($aio_wp_security->configs->get_value('aiowps_enable_woo_login_captcha') == '1' &&
|
125 |
!is_user_logged_in()) {
|
126 |
-
$
|
127 |
add_action('woocommerce_login_form', array(&$this, 'insert_captcha_question_form'));
|
128 |
}
|
129 |
|
|
|
130 |
if($aio_wp_security->configs->get_value('aiowps_enable_woo_register_captcha') == '1' &&
|
131 |
!is_user_logged_in()) {
|
132 |
-
$
|
133 |
add_action('woocommerce_register_form', array(&$this, 'insert_captcha_question_form'));
|
134 |
}
|
135 |
|
136 |
-
|
137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
}
|
139 |
|
140 |
//For bbpress new topic form captcha
|
@@ -187,7 +210,6 @@ class AIOWPSecurity_General_Init_Tasks
|
|
187 |
add_action('signup_extra_fields', array(&$this, 'insert_captcha_question_form_multi'));
|
188 |
//add_action('preprocess_signup_form', array(&$this, 'process_signup_form_multi'));
|
189 |
add_filter( 'wpmu_validate_user_signup', array(&$this, 'process_signup_form_multi') );
|
190 |
-
|
191 |
}
|
192 |
}
|
193 |
restore_current_blog();
|
@@ -199,11 +221,12 @@ class AIOWPSecurity_General_Init_Tasks
|
|
199 |
}
|
200 |
}
|
201 |
|
202 |
-
//For comment captcha feature
|
203 |
if (AIOWPSecurity_Utility::is_multisite_install()){
|
204 |
$blog_id = get_current_blog_id();
|
205 |
switch_to_blog($blog_id);
|
206 |
-
if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1'
|
|
|
207 |
if (!is_user_logged_in()) {
|
208 |
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')) {
|
209 |
add_action('wp_head', array(&$this, 'add_recaptcha_script'));
|
@@ -215,7 +238,8 @@ class AIOWPSecurity_General_Init_Tasks
|
|
215 |
}
|
216 |
restore_current_blog();
|
217 |
}else{
|
218 |
-
if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1'
|
|
|
219 |
if (!is_user_logged_in()) {
|
220 |
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')) {
|
221 |
add_action('wp_head', array(&$this, 'add_recaptcha_script'));
|
@@ -415,16 +439,30 @@ class AIOWPSecurity_General_Init_Tasks
|
|
415 |
}
|
416 |
}
|
417 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
418 |
function insert_captcha_custom_login($cust_html_code, $args)
|
419 |
{
|
420 |
global $aio_wp_security;
|
421 |
-
$
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
}
|
429 |
|
430 |
function insert_captcha_question_form_multi($error)
|
@@ -437,7 +475,7 @@ class AIOWPSecurity_General_Init_Tasks
|
|
437 |
{
|
438 |
global $aio_wp_security;
|
439 |
//Check if captcha enabled
|
440 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
441 |
if ( $verify_captcha === false ) {
|
442 |
// wrong answer was entered
|
443 |
$result['errors']->add('generic', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
@@ -455,7 +493,7 @@ class AIOWPSecurity_General_Init_Tasks
|
|
455 |
// For this case we use the "explicit" recaptcha display
|
456 |
$calling_hook = current_filter();
|
457 |
$site_key = esc_html( $aio_wp_security->configs->get_value('aiowps_recaptcha_site_key') );
|
458 |
-
if ( $calling_hook == 'woocommerce_login_form' ) {
|
459 |
echo '<div class="g-recaptcha-wrap" style="padding:10px 0 10px 0"><div id="woo_recaptcha_1" class="g-recaptcha" data-sitekey="'.$site_key.'"></div></div>';
|
460 |
return;
|
461 |
}
|
@@ -498,7 +536,7 @@ class AIOWPSecurity_General_Init_Tasks
|
|
498 |
return $comment;
|
499 |
}
|
500 |
|
501 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
502 |
if($verify_captcha === false) {
|
503 |
//Wrong answer
|
504 |
wp_die( __('Error: You entered an incorrect CAPTCHA answer. Please go back and try again.', 'all-in-one-wp-security-and-firewall'));
|
@@ -507,13 +545,21 @@ class AIOWPSecurity_General_Init_Tasks
|
|
507 |
}
|
508 |
}
|
509 |
|
|
|
|
|
|
|
|
|
510 |
function process_lost_password_form_post()
|
511 |
{
|
512 |
global $aio_wp_security;
|
513 |
|
514 |
-
|
515 |
-
if
|
516 |
-
|
|
|
|
|
|
|
|
|
517 |
}
|
518 |
}
|
519 |
|
@@ -536,7 +582,7 @@ class AIOWPSecurity_General_Init_Tasks
|
|
536 |
{
|
537 |
global $bp, $aio_wp_security;
|
538 |
//Check captcha if required
|
539 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
540 |
if($verify_captcha === false) {
|
541 |
// wrong answer was entered
|
542 |
$bp->signup->errors['aiowps-captcha-answer'] = __('Your CAPTCHA answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall');
|
@@ -546,16 +592,13 @@ class AIOWPSecurity_General_Init_Tasks
|
|
546 |
|
547 |
function aiowps_validate_woo_login_with_captcha( $errors, $username, $password ) {
|
548 |
global $aio_wp_security;
|
549 |
-
|
550 |
$locked = $aio_wp_security->user_login_obj->check_locked_user();
|
551 |
-
if($locked
|
552 |
-
|
553 |
-
} else {
|
554 |
-
$errors->add('authentication_failed', __('<strong>ERROR</strong>: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall'));
|
555 |
return $errors;
|
556 |
}
|
557 |
-
$verify_captcha = $aio_wp_security->captcha_obj->maybe_verify_captcha();
|
558 |
|
|
|
559 |
if($verify_captcha === false) {
|
560 |
// wrong answer was entered
|
561 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
@@ -564,6 +607,23 @@ class AIOWPSecurity_General_Init_Tasks
|
|
564 |
|
565 |
}
|
566 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
567 |
/**
|
568 |
* Displays a notice message if the plugin was reactivated after being initially deactivated
|
569 |
* Gives users option of re-applying the aiowps rules which were deleted from the .htaccess after deactivation.
|
@@ -610,8 +670,26 @@ class AIOWPSecurity_General_Init_Tasks
|
|
610 |
}
|
611 |
}
|
612 |
|
|
|
|
|
|
|
|
|
|
|
613 |
function add_recaptcha_script()
|
614 |
{
|
615 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
616 |
}
|
617 |
}
|
120 |
}
|
121 |
|
122 |
//For woo form captcha features
|
123 |
+
$woo_login_captcha_enabled = false;
|
124 |
if($aio_wp_security->configs->get_value('aiowps_enable_woo_login_captcha') == '1' &&
|
125 |
!is_user_logged_in()) {
|
126 |
+
$woo_login_captcha_enabled = true;
|
127 |
add_action('woocommerce_login_form', array(&$this, 'insert_captcha_question_form'));
|
128 |
}
|
129 |
|
130 |
+
$woo_register_captcha_enabled = false;
|
131 |
if($aio_wp_security->configs->get_value('aiowps_enable_woo_register_captcha') == '1' &&
|
132 |
!is_user_logged_in()) {
|
133 |
+
$woo_register_captcha_enabled = true;
|
134 |
add_action('woocommerce_register_form', array(&$this, 'insert_captcha_question_form'));
|
135 |
}
|
136 |
|
137 |
+
$woo_lostpassword_captcha_enabled = false;
|
138 |
+
if($aio_wp_security->configs->get_value('aiowps_enable_woo_lostpassword_captcha') == '1' &&
|
139 |
+
!is_user_logged_in()) {
|
140 |
+
$woo_lostpassword_captcha_enabled = true;
|
141 |
+
add_action('woocommerce_lostpassword_form', array(&$this, 'insert_captcha_question_form'));
|
142 |
+
}
|
143 |
+
|
144 |
+
|
145 |
+
if($woo_login_captcha_enabled){
|
146 |
+
if(isset($_POST['woocommerce-login-nonce'])) {
|
147 |
+
add_filter('woocommerce_process_login_errors', array(&$this, 'aiowps_validate_woo_login_with_captcha'), 10, 3);
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
if($woo_register_captcha_enabled){
|
152 |
+
if(isset($_POST['woocommerce-register-nonce'])) {
|
153 |
+
add_filter('woocommerce_process_registration_errors', array(&$this, 'aiowps_validate_woo_login_with_captcha'), 10, 3);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
if($woo_lostpassword_captcha_enabled){
|
158 |
+
if(isset($_POST['woocommerce-lost-password-nonce'])) {
|
159 |
+
add_action('lostpassword_post', array(&$this, 'process_woo_lost_password_form_post'));
|
160 |
+
}
|
161 |
}
|
162 |
|
163 |
//For bbpress new topic form captcha
|
210 |
add_action('signup_extra_fields', array(&$this, 'insert_captcha_question_form_multi'));
|
211 |
//add_action('preprocess_signup_form', array(&$this, 'process_signup_form_multi'));
|
212 |
add_filter( 'wpmu_validate_user_signup', array(&$this, 'process_signup_form_multi') );
|
|
|
213 |
}
|
214 |
}
|
215 |
restore_current_blog();
|
221 |
}
|
222 |
}
|
223 |
|
224 |
+
//For comment captcha feature or custom login form captcha
|
225 |
if (AIOWPSecurity_Utility::is_multisite_install()){
|
226 |
$blog_id = get_current_blog_id();
|
227 |
switch_to_blog($blog_id);
|
228 |
+
if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1' ||
|
229 |
+
$aio_wp_security->configs->get_value('aiowps_enable_custom_login_captcha') == '1'){
|
230 |
if (!is_user_logged_in()) {
|
231 |
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')) {
|
232 |
add_action('wp_head', array(&$this, 'add_recaptcha_script'));
|
238 |
}
|
239 |
restore_current_blog();
|
240 |
}else{
|
241 |
+
if($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1' ||
|
242 |
+
$aio_wp_security->configs->get_value('aiowps_enable_custom_login_captcha') == '1'){
|
243 |
if (!is_user_logged_in()) {
|
244 |
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')) {
|
245 |
add_action('wp_head', array(&$this, 'add_recaptcha_script'));
|
439 |
}
|
440 |
}
|
441 |
|
442 |
+
/**
|
443 |
+
* Renders captcha on form produced by the wp_login_form() function, ie, custom wp login form
|
444 |
+
* @global type $aio_wp_security
|
445 |
+
* @param type $cust_html_code
|
446 |
+
* @param type $args
|
447 |
+
* @return string
|
448 |
+
*/
|
449 |
function insert_captcha_custom_login($cust_html_code, $args)
|
450 |
{
|
451 |
global $aio_wp_security;
|
452 |
+
if($aio_wp_security->configs->get_value('aiowps_default_recaptcha')) {
|
453 |
+
$site_key = esc_html( $aio_wp_security->configs->get_value('aiowps_recaptcha_site_key') );
|
454 |
+
$cap_form = '<div class="g-recaptcha-wrap" style="padding:10px 0 10px 0"><div class="g-recaptcha" data-sitekey="'.$site_key.'"></div></div>';
|
455 |
+
$cust_html_code .= $cap_form;
|
456 |
+
return $cust_html_code;
|
457 |
+
} else {
|
458 |
+
$cap_form = '<p class="aiowps-captcha"><label>'.__('Please enter an answer in digits:','all-in-one-wp-security-and-firewall').'</label>';
|
459 |
+
$cap_form .= '<div class="aiowps-captcha-equation"><strong>';
|
460 |
+
$maths_question_output = $aio_wp_security->captcha_obj->generate_maths_question();
|
461 |
+
$cap_form .= $maths_question_output . '</strong></div></p>';
|
462 |
+
|
463 |
+
$cust_html_code .= $cap_form;
|
464 |
+
return $cust_html_code;
|
465 |
+
}
|
466 |
}
|
467 |
|
468 |
function insert_captcha_question_form_multi($error)
|
475 |
{
|
476 |
global $aio_wp_security;
|
477 |
//Check if captcha enabled
|
478 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
479 |
if ( $verify_captcha === false ) {
|
480 |
// wrong answer was entered
|
481 |
$result['errors']->add('generic', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
493 |
// For this case we use the "explicit" recaptcha display
|
494 |
$calling_hook = current_filter();
|
495 |
$site_key = esc_html( $aio_wp_security->configs->get_value('aiowps_recaptcha_site_key') );
|
496 |
+
if ( $calling_hook == 'woocommerce_login_form' || $calling_hook == 'woocommerce_lostpassword_form') {
|
497 |
echo '<div class="g-recaptcha-wrap" style="padding:10px 0 10px 0"><div id="woo_recaptcha_1" class="g-recaptcha" data-sitekey="'.$site_key.'"></div></div>';
|
498 |
return;
|
499 |
}
|
536 |
return $comment;
|
537 |
}
|
538 |
|
539 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
540 |
if($verify_captcha === false) {
|
541 |
//Wrong answer
|
542 |
wp_die( __('Error: You entered an incorrect CAPTCHA answer. Please go back and try again.', 'all-in-one-wp-security-and-firewall'));
|
545 |
}
|
546 |
}
|
547 |
|
548 |
+
/**
|
549 |
+
* Process the main Wordpress account lost password login form post
|
550 |
+
* Called by wp hook "lostpassword_post"
|
551 |
+
*/
|
552 |
function process_lost_password_form_post()
|
553 |
{
|
554 |
global $aio_wp_security;
|
555 |
|
556 |
+
// Workaround - the woocommerce lost password form also uses the same "lostpassword_post" hook.
|
557 |
+
// We don't want to process woo forms here so ignore if this is a woo lost password $_POST
|
558 |
+
if (!array_key_exists('woocommerce-lost-password-nonce', $_POST)) {
|
559 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
560 |
+
if ( $verify_captcha === false ) {
|
561 |
+
add_filter('allow_password_reset', array(&$this, 'add_lostpassword_captcha_error_msg'));
|
562 |
+
}
|
563 |
}
|
564 |
}
|
565 |
|
582 |
{
|
583 |
global $bp, $aio_wp_security;
|
584 |
//Check captcha if required
|
585 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
586 |
if($verify_captcha === false) {
|
587 |
// wrong answer was entered
|
588 |
$bp->signup->errors['aiowps-captcha-answer'] = __('Your CAPTCHA answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall');
|
592 |
|
593 |
function aiowps_validate_woo_login_with_captcha( $errors, $username, $password ) {
|
594 |
global $aio_wp_security;
|
|
|
595 |
$locked = $aio_wp_security->user_login_obj->check_locked_user();
|
596 |
+
if(!empty($locked)){
|
597 |
+
$errors->add('authentication_failed', __('<strong>ERROR</strong>: Your IP address is currently locked please contact the administrator!', 'all-in-one-wp-security-and-firewall'));
|
|
|
|
|
598 |
return $errors;
|
599 |
}
|
|
|
600 |
|
601 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
602 |
if($verify_captcha === false) {
|
603 |
// wrong answer was entered
|
604 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
607 |
|
608 |
}
|
609 |
|
610 |
+
/**
|
611 |
+
* Process the woocommerce lost password login form post
|
612 |
+
* Called by wp hook "lostpassword_post"
|
613 |
+
*/
|
614 |
+
function process_woo_lost_password_form_post()
|
615 |
+
{
|
616 |
+
global $aio_wp_security;
|
617 |
+
|
618 |
+
if(isset($_POST['woocommerce-lost-password-nonce'])) {
|
619 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
620 |
+
if ( $verify_captcha === false ) {
|
621 |
+
add_filter('allow_password_reset', array(&$this, 'add_lostpassword_captcha_error_msg'));
|
622 |
+
}
|
623 |
+
}
|
624 |
+
}
|
625 |
+
|
626 |
+
|
627 |
/**
|
628 |
* Displays a notice message if the plugin was reactivated after being initially deactivated
|
629 |
* Gives users option of re-applying the aiowps rules which were deleted from the .htaccess after deactivation.
|
670 |
}
|
671 |
}
|
672 |
|
673 |
+
/**
|
674 |
+
* Enqueues the Google recaptcha api URL in the wp_head for general pages
|
675 |
+
* Caters for scenarios when recaptcha used on wp comments or custom wp login form
|
676 |
+
*
|
677 |
+
*/
|
678 |
function add_recaptcha_script()
|
679 |
{
|
680 |
+
// Enqueue the recaptcha api url
|
681 |
+
|
682 |
+
// Do NOT enqueue if this is the main woocommerce account login page because for woocommerce page we "explicitly" render the recaptcha widget
|
683 |
+
$is_woo = false;
|
684 |
+
|
685 |
+
if ( function_exists('is_account_page') ) {
|
686 |
+
// Check if this a woocommerce account page
|
687 |
+
$is_woo = is_account_page();
|
688 |
+
}
|
689 |
+
|
690 |
+
if ( empty( $is_woo ) ) {
|
691 |
+
//only enqueue when not a woocommerce page
|
692 |
+
wp_enqueue_script( 'google-recaptcha', 'https://www.google.com/recaptcha/api.js', false );
|
693 |
+
}
|
694 |
}
|
695 |
}
|
classes/wp-security-user-login.php
CHANGED
@@ -79,7 +79,7 @@ class AIOWPSecurity_User_Login
|
|
79 |
return $user;
|
80 |
}
|
81 |
$captcha_error = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
82 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
83 |
if ( $verify_captcha === false ) {
|
84 |
return $captcha_error;
|
85 |
}
|
79 |
return $user;
|
80 |
}
|
81 |
$captcha_error = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Your answer was incorrect - please try again.', 'all-in-one-wp-security-and-firewall'));
|
82 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
83 |
if ( $verify_captcha === false ) {
|
84 |
return $captcha_error;
|
85 |
}
|
classes/wp-security-user-registration.php
CHANGED
@@ -69,7 +69,7 @@ class AIOWPSecurity_User_Registration
|
|
69 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall'));
|
70 |
return $errors;
|
71 |
}
|
72 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
73 |
if($verify_captcha === false)
|
74 |
{
|
75 |
// wrong answer was entered
|
@@ -89,7 +89,7 @@ class AIOWPSecurity_User_Registration
|
|
89 |
}else{
|
90 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall'));
|
91 |
}
|
92 |
-
$verify_captcha = $aio_wp_security->captcha_obj->
|
93 |
|
94 |
if($verify_captcha === false)
|
95 |
{
|
69 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall'));
|
70 |
return $errors;
|
71 |
}
|
72 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
73 |
if($verify_captcha === false)
|
74 |
{
|
75 |
// wrong answer was entered
|
89 |
}else{
|
90 |
$errors->add('authentication_failed', __('<strong>ERROR</strong>: You are not allowed to register because your IP address is currently locked!', 'all-in-one-wp-security-and-firewall'));
|
91 |
}
|
92 |
+
$verify_captcha = $aio_wp_security->captcha_obj->verify_captcha_submit();
|
93 |
|
94 |
if($verify_captcha === false)
|
95 |
{
|
readme.txt
CHANGED
@@ -186,6 +186,9 @@ https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
|
|
186 |
None
|
187 |
|
188 |
== Changelog ==
|
|
|
|
|
|
|
189 |
= 4.3.9.1 =
|
190 |
- Fixed rename login page feature bug introduced after WP core change in version 5.2.
|
191 |
|
186 |
None
|
187 |
|
188 |
== Changelog ==
|
189 |
+
= 4.3.9.2 =
|
190 |
+
- Fixed various captcha bugs: woocommerce lost password page, custom login form page, etc
|
191 |
+
|
192 |
= 4.3.9.1 =
|
193 |
- Fixed rename login page feature bug introduced after WP core change in version 5.2.
|
194 |
|
wp-security-core.php
CHANGED
@@ -7,7 +7,7 @@ if ( !defined('ABSPATH') ) {
|
|
7 |
if (!class_exists('AIO_WP_Security')){
|
8 |
|
9 |
class AIO_WP_Security{
|
10 |
-
var $version = '4.3.9.
|
11 |
var $db_version = '1.9';
|
12 |
var $plugin_url;
|
13 |
var $plugin_path;
|
@@ -219,6 +219,10 @@ class AIO_WP_Security{
|
|
219 |
new AIOWPSecurity_WP_Loaded_Tasks();
|
220 |
}
|
221 |
|
|
|
|
|
|
|
|
|
222 |
function aiowps_login_enqueue()
|
223 |
{
|
224 |
global $aio_wp_security;
|
7 |
if (!class_exists('AIO_WP_Security')){
|
8 |
|
9 |
class AIO_WP_Security{
|
10 |
+
var $version = '4.3.9.2';
|
11 |
var $db_version = '1.9';
|
12 |
var $plugin_url;
|
13 |
var $plugin_path;
|
219 |
new AIOWPSecurity_WP_Loaded_Tasks();
|
220 |
}
|
221 |
|
222 |
+
/**
|
223 |
+
* Enqueues the Google recaptcha v2 api URL for the standard WP login page
|
224 |
+
* @global type $aio_wp_security
|
225 |
+
*/
|
226 |
function aiowps_login_enqueue()
|
227 |
{
|
228 |
global $aio_wp_security;
|
wp-security.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: All In One WP Security
|
4 |
-
Version: 4.3.9.
|
5 |
Plugin URI: https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
|
6 |
Author: Tips and Tricks HQ, Peter Petreski, Ruhul, Ivy
|
7 |
Author URI: https://www.tipsandtricks-hq.com/
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: All In One WP Security
|
4 |
+
Version: 4.3.9.2
|
5 |
Plugin URI: https://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
|
6 |
Author: Tips and Tricks HQ, Peter Petreski, Ruhul, Ivy
|
7 |
Author URI: https://www.tipsandtricks-hq.com/
|