function __construct() { global $aio_wp_security; if ($aio_wp_security->configs->get_value('aiowps_enable_rename_login_page') == '1') { add_action('widgets_init', array(&$this, 'remove_standard_wp_meta_widget')); add_filter('retrieve_password_message', array(&$this, 'decode_reset_pw_msg'), 10, 4); //Fix for non decoded html entities in password reset link } add_action('admin_notices', array(&$this, 'reapply_htaccess_rules_notice')); if (isset($_REQUEST['aiowps_reapply_htaccess'])) { if (strip_tags($_REQUEST['aiowps_reapply_htaccess']) == 1) { include_once 'wp-security-installer.php'; if (AIOWPSecurity_Installer::reactivation_tasks()) { echo '<div class="updated"><p>The AIOWPS .htaccess rules were successfully re-inserted.</p></div>'; } else { echo '<div class="error"><p>AIOWPS encountered an error when trying to write to your .htaccess file. Please check the logs.</p></div>'; } } elseif (strip_tags($_REQUEST['aiowps_reapply_htaccess']) == 2) { //Don't re-write the rules and just delete the temp config item delete_option('aiowps_temp_configs'); } } if ($aio_wp_security->configs->get_value('aiowps_prevent_site_display_inside_frame') == '1') { send_frame_options_header(); //send X-Frame-Options: SAMEORIGIN in HTTP header } if ($aio_wp_security->configs->get_value('aiowps_remove_wp_generator_meta_info') == '1') { add_filter('the_generator', array(&$this, 'remove_wp_generator_meta_info')); } //For the cookie based brute force prevention feature if ($aio_wp_security->configs->get_value('aiowps_enable_brute_force_attack_prevention') == 1) { $bfcf_secret_word = $aio_wp_security->configs->get_value('aiowps_brute_force_secret_word'); if (isset($_GET[$bfcf_secret_word])) { //If URL contains secret word in query param then set cookie and then redirect to the login page AIOWPSecurity_Utility::set_cookie_value($bfcf_secret_word, "1"); AIOWPSecurity_Utility::redirect_to_url(AIOWPSEC_WP_URL . "/wp-admin"); } } //For user unlock request feature if (isset($_POST['aiowps_unlock_request']) || isset($_POST['aiowps_wp_submit_unlock_request'])) { nocache_headers(); remove_action('wp_head', 'head_addons', 7); include_once AIO_WP_SECURITY_PATH . '/other-includes/wp-security-unlock-request.php'; exit; } if (isset($_GET['aiowps_auth_key'])) { //If URL contains unlock key in query param then process the request $unlock_key = strip_tags($_GET['aiowps_auth_key']); AIOWPSecurity_User_Login::process_unlock_request($unlock_key); } //For honeypot feature if (isset($_POST['aio_special_field'])) { $special_field_value = strip_tags($_POST['aio_special_field']); if (!empty($special_field_value)) { //This means a robot has submitted the login form! //Redirect back to its localhost AIOWPSecurity_Utility::redirect_to_url('http://127.0.0.1'); } } //For 404 IP lockout feature if ($aio_wp_security->configs->get_value('aiowps_enable_404_IP_lockout') == '1') { if (!is_user_logged_in() || !current_user_can('administrator')) { $this->do_404_lockout_tasks(); } } //For login captcha feature if ($aio_wp_security->configs->get_value('aiowps_enable_login_captcha') == '1') { if (!is_user_logged_in()) { add_action('login_form', array(&$this, 'insert_captcha_question_form')); } } //For custom login form captcha feature, ie, when wp_login_form() function is used to generate login form if ($aio_wp_security->configs->get_value('aiowps_enable_custom_login_captcha') == '1') { if (!is_user_logged_in()) { add_filter('login_form_middle', array(&$this, 'insert_captcha_custom_login'), 10, 2); //For cases where the WP wp_login_form() function is used } } //For honeypot feature if ($aio_wp_security->configs->get_value('aiowps_enable_login_honeypot') == '1') { if (!is_user_logged_in()) { add_action('login_form', array(&$this, 'insert_honeypot_hidden_field')); } } //For lost password captcha feature if ($aio_wp_security->configs->get_value('aiowps_enable_lost_password_captcha') == '1') { if (!is_user_logged_in()) { add_action('lostpassword_form', array(&$this, 'insert_captcha_question_form')); add_action('lostpassword_post', array(&$this, 'process_lost_password_form_post')); } } //For registration page captcha feature if (AIOWPSecurity_Utility::is_multisite_install()) { $blog_id = get_current_blog_id(); switch_to_blog($blog_id); if ($aio_wp_security->configs->get_value('aiowps_enable_registration_page_captcha') == '1') { if (!is_user_logged_in()) { add_action('signup_extra_fields', array(&$this, 'insert_captcha_question_form_multi')); //add_action('preprocess_signup_form', array(&$this, 'process_signup_form_multi')); add_filter('wpmu_validate_user_signup', array(&$this, 'process_signup_form_multi')); } } restore_current_blog(); } else { if ($aio_wp_security->configs->get_value('aiowps_enable_registration_page_captcha') == '1') { if (!is_user_logged_in()) { add_action('register_form', array(&$this, 'insert_captcha_question_form')); } } } //For comment captcha feature if (AIOWPSecurity_Utility::is_multisite_install()) { $blog_id = get_current_blog_id(); switch_to_blog($blog_id); if ($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1') { add_action('comment_form_after_fields', array(&$this, 'insert_captcha_question_form'), 1); add_action('comment_form_logged_in_after', array(&$this, 'insert_captcha_question_form'), 1); add_filter('preprocess_comment', array(&$this, 'process_comment_post')); } restore_current_blog(); } else { if ($aio_wp_security->configs->get_value('aiowps_enable_comment_captcha') == '1') { add_action('comment_form_after_fields', array(&$this, 'insert_captcha_question_form'), 1); add_action('comment_form_logged_in_after', array(&$this, 'insert_captcha_question_form'), 1); add_filter('preprocess_comment', array(&$this, 'process_comment_post')); } } //For buddypress registration captcha feature if ($aio_wp_security->configs->get_value('aiowps_enable_bp_register_captcha') == '1') { add_action('bp_account_details_fields', array(&$this, 'insert_captcha_question_form')); add_action('bp_signup_validate', array(&$this, 'buddy_press_signup_validate_captcha')); } //For feature which displays logged in users $this->update_logged_in_user_transient(); //For block fake googlebots feature if ($aio_wp_security->configs->get_value('aiowps_block_fake_googlebots') == '1') { include_once AIO_WP_SECURITY_PATH . '/classes/wp-security-bot-protection.php'; AIOWPSecurity_Fake_Bot_Protection::block_fake_googlebots(); } //For 404 event logging if ($aio_wp_security->configs->get_value('aiowps_enable_404_logging') == '1') { add_action('wp_head', array(&$this, 'check_404_event')); } //Add more tasks that need to be executed at init time }
/** * When loading sensitive checkout or account pages, send a HTTP header to limit rendering of pages to same origin iframes for security reasons. * * Can be disabled with: remove_action( 'template_redirect', 'wc_send_frame_options_header' ); * * @since 2.3.10 */ function wc_send_frame_options_header() { if (is_checkout() || is_account_page()) { send_frame_options_header(); } }
/** * Sends the X-Frame-Options header to limit rendering of pages to frames on * the same domain/origin. Provides XSS protection. * * @return void */ public function enableFrameOptions() { if (!headers_sent()) { send_frame_options_header(); } }