All In One WP Security & Firewall - Version 3.6

Version Description

  • Added a new feature to prevent image hot-linking. (See the "Prevent Hotlinks" tab in the firewall menu)
  • Added a check in the Rename Login Page feature to prevent people from setting the slug to "wp-admin"
  • Fixed a small bug with Login Lockdown feature.
Download this release

Release Info

Developer mra13
Plugin Icon 128x128 All In One WP Security & Firewall
Version 3.6
Comparing to
See all releases

Code changes from version 3.5.1 to 3.6

admin/wp-security-brute-force-menu.php CHANGED
@@ -99,6 +99,9 @@ class AIOWPSecurity_Brute_Force_Menu extends AIOWPSecurity_Admin_Menu
99
  $error .= '<br />'.__('Please enter a value for your login page slug.','aiowpsecurity');
100
  }else if (!empty($_POST['aiowps_login_page_slug'])){
101
  $aiowps_login_page_slug = sanitize_text_field($_POST['aiowps_login_page_slug']);
 
 
 
102
  }
103
 
104
  if($error){
99
  $error .= '<br />'.__('Please enter a value for your login page slug.','aiowpsecurity');
100
  }else if (!empty($_POST['aiowps_login_page_slug'])){
101
  $aiowps_login_page_slug = sanitize_text_field($_POST['aiowps_login_page_slug']);
102
+ if($aiowps_login_page_slug == 'wp-admin'){
103
+ $error .= '<br />'.__('You cannot use the value "wp-admin" for your login page slug.','aiowpsecurity');
104
+ }
105
  }
106
 
107
  if($error){
admin/wp-security-filescan-menu.php CHANGED
@@ -347,8 +347,20 @@ class AIOWPSecurity_Filescan_Menu extends AIOWPSecurity_Admin_Menu
347
 
348
  echo '<h2>'.__('Scanning For Malware', 'aiowpsecurity').'</h2>';
349
  echo '<p>'.__('Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly.', 'aiowpsecurity').'</p>'.
350
- '<p>'.__('This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything.', 'aiowpsecurity').'</p>'.
351
- '<p>'.sprintf(__('To learn more please %s.', 'aiowpsecurity'), $site_scanners_link).'</p>';
 
 
 
 
 
 
 
 
 
 
 
 
352
  ?>
353
  </div>
354
 
347
 
348
  echo '<h2>'.__('Scanning For Malware', 'aiowpsecurity').'</h2>';
349
  echo '<p>'.__('Due to the constantly changing and complex nature of Malware, scanning for such things using a standalone plugin will not work reliably. This is something best done via an external scan of your site regularly.', 'aiowpsecurity').'</p>'.
350
+ '<p>'.__('This is why we have created an easy-to-use scanning service which is hosted off our own server which will scan your site for malware once every day and notify you if it finds anything.', 'aiowpsecurity').'</p>';
351
+ echo '<p>'.__('When you sign up for this service you will get the following:', 'aiowpsecurity').'</p>';
352
+ echo '<ul class="aiowps_admin_ul_grp1">
353
+ <li>'.__('Free for the First 14 Days (zero risk)','aiowpsecurity').'</li>
354
+ <li>'.__('Automatic Daily Scan of 1 Website','aiowpsecurity').'</li>
355
+ <li>'.__('Automatic Malware & Blacklist Monitoring','aiowpsecurity').'</li>
356
+ <li>'.__('Automatic Email Alerting','aiowpsecurity').'</li>
357
+ <li>'.__('Site uptime monitoring','aiowpsecurity').'</li>
358
+ <li>'.__('Site response time monitoring','aiowpsecurity').'</li>
359
+ <li>'.__('Malware Cleanup','aiowpsecurity').'</li>
360
+ <li>'.__('Blacklist Removal','aiowpsecurity').'</li>
361
+ <li>'.__('No Contract (Cancel Anytime)','aiowpsecurity').'</li>
362
+ </ul>';
363
+ echo '<p>'.sprintf(__('To learn more please %s.', 'aiowpsecurity'), $site_scanners_link).'</p>';
364
  ?>
365
  </div>
366
 
admin/wp-security-firewall-menu.php CHANGED
@@ -12,6 +12,7 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
12
  'tab2' => 'render_tab2',
13
  'tab3' => 'render_tab3',
14
  'tab4' => 'render_tab4',
 
15
  );
16
 
17
  function __construct()
@@ -26,6 +27,7 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
26
  'tab2' => __('Additional Firewall Rules', 'aiowpsecurity'),
27
  'tab3' => __('5G Blacklist Firewall Rules', 'aiowpsecurity'),
28
  'tab4' => __('Internet Bots', 'aiowpsecurity'),
 
29
  );
30
  }
31
 
@@ -632,4 +634,71 @@ class AIOWPSecurity_Firewall_Menu extends AIOWPSecurity_Admin_Menu
632
  <?php
633
  }
634
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  } //end class
12
  'tab2' => 'render_tab2',
13
  'tab3' => 'render_tab3',
14
  'tab4' => 'render_tab4',
15
+ 'tab5' => 'render_tab5',
16
  );
17
 
18
  function __construct()
27
  'tab2' => __('Additional Firewall Rules', 'aiowpsecurity'),
28
  'tab3' => __('5G Blacklist Firewall Rules', 'aiowpsecurity'),
29
  'tab4' => __('Internet Bots', 'aiowpsecurity'),
30
+ 'tab5' => __('Prevent Hotlinks', 'aiowpsecurity'),
31
  );
32
  }
33
 
634
  <?php
635
  }
636
 
637
+ function render_tab5()
638
+ {
639
+ global $aio_wp_security;
640
+ global $aiowps_feature_mgr;
641
+
642
+ if(isset($_POST['aiowps_save_prevent_hotlinking']))//Do form submission tasks
643
+ {
644
+ $nonce=$_REQUEST['_wpnonce'];
645
+ if (!wp_verify_nonce($nonce, 'aiowpsec-prevent-hotlinking-nonce'))
646
+ {
647
+ $aio_wp_security->debug_logger->log_debug("Nonce check failed on prevent hotlinking options save!",4);
648
+ die("Nonce check failed on prevent hotlinking options save!");
649
+ }
650
+ $aio_wp_security->configs->set_value('aiowps_prevent_hotlinking',isset($_POST["aiowps_prevent_hotlinking"])?'1':'');
651
+ $aio_wp_security->configs->save_config();
652
+
653
+ //Recalculate points after the feature status/options have been altered
654
+ $aiowps_feature_mgr->check_feature_status_and_recalculate_points();
655
+
656
+ //Now let's write the applicable rules to the .htaccess file
657
+ $res = AIOWPSecurity_Utility_Htaccess::write_to_htaccess();
658
+
659
+ if ($res)
660
+ {
661
+ $this->show_msg_updated(__('Settings were successfully saved', 'aiowpsecurity'));
662
+ }
663
+ else if($res == -1)
664
+ {
665
+ $this->show_msg_error(__('Could not write to the .htaccess file. Please check the file permissions.', 'aiowpsecurity'));
666
+ }
667
+ }
668
+ ?>
669
+ <h2><?php _e('Prevent Image Hotlinking', 'aiowpsecurity')?></h2>
670
+ <div class="aio_blue_box">
671
+ <?php
672
+ echo '<p>'.__('A Hotlink is where someone displays an image on their site which is actually located on your site by using a direct link to the source of the image on your server.', 'aiowpsecurity');
673
+ echo '<br />'.__('Due to the fact that the image being displayed on the other person\'s site is coming from your server, this can cause leaking of bandwidth and resources for you because your server has to present this image for the people viewing it on someone elses\'s site.','aiowpsecurity');
674
+ echo '<br />'.__('This feature will prevent people from directly hotlinking images from your site\'s pages by writing some directives in your .htaccess file.', 'aiowpsecurity').'</p>';
675
+ ?>
676
+ </div>
677
+
678
+ <div class="postbox">
679
+ <h3><label for="title"><?php _e('Prevent Hotlinking', 'aiowpsecurity'); ?></label></h3>
680
+ <div class="inside">
681
+ <?php
682
+ //Display security info badge
683
+ global $aiowps_feature_mgr;
684
+ $aiowps_feature_mgr->output_feature_details_badge("prevent-hotlinking");
685
+ ?>
686
+
687
+ <form action="" method="POST">
688
+ <?php wp_nonce_field('aiowpsec-prevent-hotlinking-nonce'); ?>
689
+ <table class="form-table">
690
+ <tr valign="top">
691
+ <th scope="row"><?php _e('Prevent Image Hotlinking', 'aiowpsecurity')?>:</th>
692
+ <td>
693
+ <input name="aiowps_prevent_hotlinking" type="checkbox"<?php if($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking')=='1') echo ' checked="checked"'; ?> value="1"/>
694
+ <span class="description"><?php _e('Check this if you want to prevent hotlinking to images on your site.', 'aiowpsecurity'); ?></span>
695
+ </td>
696
+ </tr>
697
+ </table>
698
+ <input type="submit" name="aiowps_save_prevent_hotlinking" value="<?php _e('Save Settings', 'aiowpsecurity')?>" class="button-primary" />
699
+ </form>
700
+ </div></div>
701
+ <?php
702
+ }
703
+
704
  } //end class
admin/wp-security-settings-menu.php CHANGED
@@ -496,7 +496,6 @@ class AIOWPSecurity_Settings_Menu extends AIOWPSecurity_Admin_Menu
496
  <?php
497
  }
498
 
499
-
500
  function check_if_wp_config_contents($wp_file)
501
  {
502
  $is_wp_config = false;
496
  <?php
497
  }
498
 
 
499
  function check_if_wp_config_contents($wp_file)
500
  {
501
  $is_wp_config = false;
classes/grade-system/wp-security-feature-item-manager.php CHANGED
@@ -28,6 +28,9 @@ class AIOWPSecurity_Feature_Item_Manager
28
  //WP Generator Meta
29
  $this->feature_items[] = new AIOWPSecurity_Feature_Item("wp-generator-meta-tag", __("Remove WP Generatore Meta Tag", "aiowpsecurity"), $this->feature_point_1, $this->sec_level_basic);
30
 
 
 
 
31
  //User Accounts Menu Features
32
  //Change Admin Username
33
  $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-accounts-change-admin-user", __("Change Admin Username", "aiowpsecurity"), $this->feature_point_3, $this->sec_level_basic);
@@ -148,6 +151,11 @@ class AIOWPSecurity_Feature_Item_Manager
148
  $this->check_remove_wp_generator_meta_feature($item);
149
  }
150
 
 
 
 
 
 
151
  if($item->feature_id == "user-accounts-change-admin-user")
152
  {
153
  $this->check_user_accounts_change_admin_user_feature($item);
@@ -318,6 +326,18 @@ class AIOWPSecurity_Feature_Item_Manager
318
  }
319
  }
320
 
 
 
 
 
 
 
 
 
 
 
 
 
321
  function check_user_accounts_change_admin_user_feature($item)
322
  {
323
  if (AIOWPSecurity_Utility::check_user_exists('admin')) {
28
  //WP Generator Meta
29
  $this->feature_items[] = new AIOWPSecurity_Feature_Item("wp-generator-meta-tag", __("Remove WP Generatore Meta Tag", "aiowpsecurity"), $this->feature_point_1, $this->sec_level_basic);
30
 
31
+ //Prevent Image Hotlinks
32
+ $this->feature_items[] = new AIOWPSecurity_Feature_Item("prevent-hotlinking", __("Prevent Image Hotlinking", "aiowpsecurity"), $this->feature_point_2, $this->sec_level_basic);
33
+
34
  //User Accounts Menu Features
35
  //Change Admin Username
36
  $this->feature_items[] = new AIOWPSecurity_Feature_Item("user-accounts-change-admin-user", __("Change Admin Username", "aiowpsecurity"), $this->feature_point_3, $this->sec_level_basic);
151
  $this->check_remove_wp_generator_meta_feature($item);
152
  }
153
 
154
+ if($item->feature_id == "prevent-hotlinking")
155
+ {
156
+ $this->check_prevent_hotlinking_feature($item);
157
+ }
158
+
159
  if($item->feature_id == "user-accounts-change-admin-user")
160
  {
161
  $this->check_user_accounts_change_admin_user_feature($item);
326
  }
327
  }
328
 
329
+ function check_prevent_hotlinking_feature($item)
330
+ {
331
+ global $aio_wp_security;
332
+ if ($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking') == '1') {
333
+ $item->set_feature_status($this->feature_active);
334
+ }
335
+ else
336
+ {
337
+ $item->set_feature_status($this->feature_inactive);
338
+ }
339
+ }
340
+
341
  function check_user_accounts_change_admin_user_feature($item)
342
  {
343
  if (AIOWPSecurity_Utility::check_user_exists('admin')) {
classes/wp-security-configure-settings.php CHANGED
@@ -14,6 +14,8 @@ class AIOWPSecurity_Configure_Settings
14
  //WP Generator Meta Tag feature
15
  $aio_wp_security->configs->set_value('aiowps_remove_wp_generator_meta_info','');//Checkbox
16
 
 
 
17
  //General Settings Page
18
 
19
  //User password feature
@@ -116,6 +118,9 @@ class AIOWPSecurity_Configure_Settings
116
  //WP Generator Meta Tag feature
117
  $aio_wp_security->configs->add_value('aiowps_remove_wp_generator_meta_info','');//Checkbox
118
 
 
 
 
119
  //General Settings Page
120
 
121
  //User password feature
14
  //WP Generator Meta Tag feature
15
  $aio_wp_security->configs->set_value('aiowps_remove_wp_generator_meta_info','');//Checkbox
16
 
17
+ //Prevent Image Hotlinks
18
+ $aio_wp_security->configs->set_value('aiowps_prevent_hotlinking','');//Checkbox
19
  //General Settings Page
20
 
21
  //User password feature
118
  //WP Generator Meta Tag feature
119
  $aio_wp_security->configs->add_value('aiowps_remove_wp_generator_meta_info','');//Checkbox
120
 
121
+ //Prevent Image Hotlinks
122
+ $aio_wp_security->configs->add_value('aiowps_prevent_hotlinking','');//Checkbox
123
+
124
  //General Settings Page
125
 
126
  //User password feature
classes/wp-security-user-login.php CHANGED
@@ -61,7 +61,7 @@ class AIOWPSecurity_User_Login
61
  $this->increment_failed_logins($username);
62
  if($aio_wp_security->configs->get_value('aiowps_enable_login_lockdown')=='1')
63
  {
64
- if($login_attempts_permitted <= $this->get_login_fail_count() || $aio_wp_security->configs->get_value('aiowps_enable_invalid_username_lockdown')=='1')
65
  {
66
  $this->lock_the_user($username);
67
  }
61
  $this->increment_failed_logins($username);
62
  if($aio_wp_security->configs->get_value('aiowps_enable_login_lockdown')=='1')
63
  {
64
+ if($login_attempts_permitted <= $this->get_login_fail_count())
65
  {
66
  $this->lock_the_user($username);
67
  }
classes/wp-security-utility-htaccess.php CHANGED
@@ -45,6 +45,10 @@ class AIOWPSecurity_Utility_Htaccess
45
 
46
  public static $enable_login_whitelist_marker_start = '#AIOWPS_LOGIN_WHITELIST_START';
47
  public static $enable_login_whitelist_marker_end = '#AIOWPS_LOGIN_WHITELIST_END';
 
 
 
 
48
  // TODO - enter more markers as new .htaccess features are added
49
 
50
  function __construct(){
@@ -220,6 +224,7 @@ class AIOWPSecurity_Utility_Htaccess
220
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_brute_force_prevention();
221
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_spambots();
222
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_login_whitelist();
 
223
  //TODO: The following utility functions are ready to use when we write the menu pages for these features
224
 
225
  //Add more functions for features as needed
@@ -873,6 +878,33 @@ class AIOWPSecurity_Utility_Htaccess
873
  return $rules;
874
  }
875
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
876
 
877
  /*
878
  * This function will do a quick check to see if a file's contents are actually .htaccess specific.
45
 
46
  public static $enable_login_whitelist_marker_start = '#AIOWPS_LOGIN_WHITELIST_START';
47
  public static $enable_login_whitelist_marker_end = '#AIOWPS_LOGIN_WHITELIST_END';
48
+
49
+ public static $prevent_image_hotlinks_marker_start = '#AIOWPS_PREVENT_IMAGE_HOTLINKS_START';
50
+ public static $prevent_image_hotlinks_marker_end = '#AIOWPS_PREVENT_IMAGE_HOTLINKS_END';
51
+
52
  // TODO - enter more markers as new .htaccess features are added
53
 
54
  function __construct(){
224
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_brute_force_prevention();
225
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_block_spambots();
226
  $rules .= AIOWPSecurity_Utility_Htaccess::getrules_enable_login_whitelist();
227
+ $rules .= AIOWPSecurity_Utility_Htaccess::prevent_image_hotlinks();
228
  //TODO: The following utility functions are ready to use when we write the menu pages for these features
229
 
230
  //Add more functions for features as needed
878
  return $rules;
879
  }
880
 
881
+ /*
882
+ * This function will write some directives to prevent image hotlinking
883
+ */
884
+ static function prevent_image_hotlinks()
885
+ {
886
+ global $aio_wp_security;
887
+ $rules = '';
888
+ if($aio_wp_security->configs->get_value('aiowps_prevent_hotlinking')=='1')
889
+ {
890
+ $url_string = AIOWPSecurity_Utility_Htaccess::return_regularized_url(AIOWPSEC_WP_URL);
891
+ if ($url_string == FALSE){
892
+ $url_string = AIOWPSEC_WP_URL;
893
+ }
894
+ $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_start . PHP_EOL; //Add feature marker start
895
+ $rules .= '<IfModule mod_rewrite.c>
896
+ RewriteEngine on
897
+ RewriteCond %{HTTP_REFERER} !^$' . PHP_EOL;
898
+ $rules .= ' RewriteCond %{REQUEST_FILENAME} -f' . PHP_EOL;
899
+ $rules .= ' RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC]' . PHP_EOL;
900
+ $rules .= ' RewriteCond %{HTTP_REFERER} !^'.$url_string.' [NC]' . PHP_EOL;
901
+ $rules .= ' RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L]
902
+ </IfModule>' . PHP_EOL;
903
+ $rules .= AIOWPSecurity_Utility_Htaccess::$prevent_image_hotlinks_marker_end . PHP_EOL; //Add feature marker end
904
+ }
905
+
906
+ return $rules;
907
+ }
908
 
909
  /*
910
  * This function will do a quick check to see if a file's contents are actually .htaccess specific.
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === All In One WP Security & Firewall ===
2
  Contributors: Tips and Tricks HQ, wpsolutions, Peter Petreski, Ruhul Amin
3
  Donate link: http://www.tipsandtricks-hq.com
4
- Tags: security, secure, Anti Virus, antivirus, ban, ban hacker, virus, firewall, firewall security, login, lockdown, htaccess, hack, malware, vulnerability, protect, protection, phishing, database, backup, plugin, sql injection, ssl, restrict, login captcha, bot
5
  Requires at least: 3.5
6
  Tested up to: 3.8.1
7
- Stable tag: 3.5.1
8
  License: GPLv3
9
 
10
  A comprehensive, user-friendly, all in one WordPress security and firewall plugin for your site.
@@ -86,6 +86,7 @@ So these firewall rules will stop malicious script(s) before it gets a chance to
86
  or malicious bots who do not have a special cookie in their browser. You (the site admin) will know how to set this special cookie and be able to log into your site.
87
  * WordPress PingBack Vulnerability Protection feature. This firewall feature allows the user to prohibit access to the xmlrpc.php file in order to protect against certain vulnerabilities in the pingback functionality. This is also helpful to block bots from constantly accessing the xmlrpc.php file and wasting your server resource.
88
  * Ability to block fake Googlebots from crawling your site.
 
89
 
90
  = Brute force login attack prevention =
91
  * Instantly block Brute Force Login Attacks via our special Cookie-Based Brute Force Login Prevention feature. This firewall functionality will block all login attempts from people and bots.
@@ -147,6 +148,11 @@ None
147
 
148
  == Changelog ==
149
 
 
 
 
 
 
150
  = 3.5.1 =
151
  - Fixed a bug where the cookie-based brute force directives were not being deleted from the .htaccess file when the Rename Login Page feature was being activated.
152
 
1
  === All In One WP Security & Firewall ===
2
  Contributors: Tips and Tricks HQ, wpsolutions, Peter Petreski, Ruhul Amin
3
  Donate link: http://www.tipsandtricks-hq.com
4
+ Tags: security, secure, Anti Virus, antivirus, ban, ban hacker, virus, firewall, firewall security, login, lockdown, htaccess, hack, malware, vulnerability, protect, protection, phishing, database, backup, plugin, sql injection, ssl, restrict, login captcha, bot, hotlink
5
  Requires at least: 3.5
6
  Tested up to: 3.8.1
7
+ Stable tag: 3.6
8
  License: GPLv3
9
 
10
  A comprehensive, user-friendly, all in one WordPress security and firewall plugin for your site.
86
  or malicious bots who do not have a special cookie in their browser. You (the site admin) will know how to set this special cookie and be able to log into your site.
87
  * WordPress PingBack Vulnerability Protection feature. This firewall feature allows the user to prohibit access to the xmlrpc.php file in order to protect against certain vulnerabilities in the pingback functionality. This is also helpful to block bots from constantly accessing the xmlrpc.php file and wasting your server resource.
88
  * Ability to block fake Googlebots from crawling your site.
89
+ * Ability to prevent image hotlinking. Use this to prevent others from hotlinking your images.
90
 
91
  = Brute force login attack prevention =
92
  * Instantly block Brute Force Login Attacks via our special Cookie-Based Brute Force Login Prevention feature. This firewall functionality will block all login attempts from people and bots.
148
 
149
  == Changelog ==
150
 
151
+ = 3.6 =
152
+ - Added a new feature to prevent image hot-linking. (See the "Prevent Hotlinks" tab in the firewall menu)
153
+ - Added a check in the Rename Login Page feature to prevent people from setting the slug to "wp-admin"
154
+ - Fixed a small bug with Login Lockdown feature.
155
+
156
  = 3.5.1 =
157
  - Fixed a bug where the cookie-based brute force directives were not being deleted from the .htaccess file when the Rename Login Page feature was being activated.
158
 
wp-security-core.php CHANGED
@@ -3,7 +3,7 @@
3
  if (!class_exists('AIO_WP_Security')){
4
 
5
  class AIO_WP_Security{
6
- var $version = '3.5.1';
7
  var $db_version = '1.4';
8
  var $plugin_url;
9
  var $plugin_path;
3
  if (!class_exists('AIO_WP_Security')){
4
 
5
  class AIO_WP_Security{
6
+ var $version = '3.6';
7
  var $db_version = '1.4';
8
  var $plugin_url;
9
  var $plugin_path;
wp-security.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: All In One WP Security
4
- Version: v3.5.1
5
  Plugin URI: http://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
6
  Author: Tips and Tricks HQ, Peter, Ruhul, Ivy
7
  Author URI: http://www.tipsandtricks-hq.com/
1
  <?php
2
  /*
3
  Plugin Name: All In One WP Security
4
+ Version: v3.6
5
  Plugin URI: http://www.tipsandtricks-hq.com/wordpress-security-and-firewall-plugin
6
  Author: Tips and Tricks HQ, Peter, Ruhul, Ivy
7
  Author URI: http://www.tipsandtricks-hq.com/