Version Description
- Fix: Fixed bug with Top 5 Logins displaying all failed logins opposed to timeframe set by email frequency.
- Fix: Fixed bug with /?author=N scan protection not working for authors with no published posts.
- Improvement: Fixed Wordfence logo width in dashboard widget on smaller screens.
- Improvement: Added country names to flag icons in widget dashboard.
- Improvement: Updated issues email to use WordPress' charset instead of ISO-8859-1.
- Improvement: Added check to see if premium API key is set to auto-renew and send email reminder prior to renewal.
- Improvement: Updated to API version 2.17.
- Improvement: Changed auto-renew reminder email to go out 10 days before renewal, 12 days before expiration.
Download this release
Release Info
Developer | wfmatt |
Plugin | Wordfence Security – Firewall & Malware Scan |
Version | 6.0.7 |
Comparing to | |
See all releases |
Code changes from version 6.0.6 to 6.0.7
- css/activity-report-widget.css +3 -0
- js/admin.js +19 -0
- lib/wfActivityReport.php +30 -0
- lib/wfIssues.php +1 -27
- lib/wordfenceClass.php +38 -26
- lib/wordfenceConstants.php +1 -1
- readme.txt +15 -5
- views/reports/activity-report.php +3 -3
- wordfence.php +2 -2
css/activity-report-widget.css
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
#wordfence_activity_report_widget .inside h1,
|
2 |
#wordfence_activity_report_widget .inside h2,
|
3 |
#wordfence_activity_report_widget .inside h3,
|
1 |
+
#wordfence_activity_report_widget .wf-logo img {
|
2 |
+
max-width: 100%;
|
3 |
+
}
|
4 |
#wordfence_activity_report_widget .inside h1,
|
5 |
#wordfence_activity_report_widget .inside h2,
|
6 |
#wordfence_activity_report_widget .inside h3,
|
js/admin.js
CHANGED
@@ -55,6 +55,25 @@
|
|
55 |
|
56 |
$(document).focus();
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
if (jQuery('#wordfenceMode_scan').length > 0) {
|
59 |
this.mode = 'scan';
|
60 |
jQuery('#wfALogViewLink').prop('href', WordfenceAdminVars.siteBaseURL + '?_wfsf=viewActivityLog&nonce=' + this.nonce);
|
55 |
|
56 |
$(document).focus();
|
57 |
|
58 |
+
// (docs|support).wordfence.com GA links
|
59 |
+
$(document).on('click', 'a', function() {
|
60 |
+
if (this.href && this.href.indexOf('utm_source') > -1) {
|
61 |
+
return;
|
62 |
+
}
|
63 |
+
var utm = '';
|
64 |
+
if (this.host == 'docs.wordfence.com') {
|
65 |
+
utm = 'utm_source=plugin&utm_medium=pluginUI&utm_campaign=docsIcon';
|
66 |
+
}
|
67 |
+
if (utm) {
|
68 |
+
utm = (this.search ? '&' : '?') + utm;
|
69 |
+
this.href = this.protocol + '//' + this.host + this.pathname + this.search + utm + this.hash;
|
70 |
+
}
|
71 |
+
|
72 |
+
if (this.href == 'http://support.wordfence.com/') {
|
73 |
+
this.href = 'https://support.wordfence.com/support/home?utm_source=plugin&utm_medium=pluginUI&utm_campaign=supportLink';
|
74 |
+
}
|
75 |
+
});
|
76 |
+
|
77 |
if (jQuery('#wordfenceMode_scan').length > 0) {
|
78 |
this.mode = 'scan';
|
79 |
jQuery('#wfALogViewLink').prop('href', WordfenceAdminVars.siteBaseURL + '?_wfsf=viewActivityLog&nonce=' + this.nonce);
|
lib/wfActivityReport.php
CHANGED
@@ -201,6 +201,10 @@ ORDER BY blockCount DESC
|
|
201 |
LIMIT %d
|
202 |
SQL
|
203 |
, $limit));
|
|
|
|
|
|
|
|
|
204 |
return $results;
|
205 |
}
|
206 |
|
@@ -223,6 +227,9 @@ ORDER BY totalBlockCount DESC
|
|
223 |
LIMIT %d
|
224 |
SQL
|
225 |
, $limit));
|
|
|
|
|
|
|
226 |
return $results;
|
227 |
}
|
228 |
|
@@ -231,12 +238,23 @@ SQL
|
|
231 |
* @return mixed
|
232 |
*/
|
233 |
public function getTopFailedLogins($limit = 10) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
$results = $this->db->get_results($this->db->prepare(<<<SQL
|
235 |
SELECT *,
|
236 |
sum(fail) as fail_count,
|
237 |
max(userID) as is_valid_user
|
238 |
FROM {$this->db->base_prefix}wfLogins
|
239 |
WHERE fail = 1
|
|
|
240 |
GROUP BY username
|
241 |
ORDER BY fail_count DESC
|
242 |
LIMIT %d
|
@@ -369,6 +387,18 @@ SQL
|
|
369 |
, $ip_bin, $country));
|
370 |
}
|
371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
/**
|
373 |
* @return wfActivityReportView
|
374 |
*/
|
201 |
LIMIT %d
|
202 |
SQL
|
203 |
, $limit));
|
204 |
+
foreach ($results as &$row) {
|
205 |
+
$row->countryName = $this->getCountryNameByCode($row->countryCode);
|
206 |
+
}
|
207 |
+
|
208 |
return $results;
|
209 |
}
|
210 |
|
227 |
LIMIT %d
|
228 |
SQL
|
229 |
, $limit));
|
230 |
+
foreach ($results as &$row) {
|
231 |
+
$row->countryName = $this->getCountryNameByCode($row->countryCode);
|
232 |
+
}
|
233 |
return $results;
|
234 |
}
|
235 |
|
238 |
* @return mixed
|
239 |
*/
|
240 |
public function getTopFailedLogins($limit = 10) {
|
241 |
+
$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day))';
|
242 |
+
switch (wfConfig::get('email_summary_interval', 'weekly')) {
|
243 |
+
case 'biweekly':
|
244 |
+
$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 14 day))';
|
245 |
+
break;
|
246 |
+
case 'monthly':
|
247 |
+
$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month))';
|
248 |
+
break;
|
249 |
+
}
|
250 |
+
|
251 |
$results = $this->db->get_results($this->db->prepare(<<<SQL
|
252 |
SELECT *,
|
253 |
sum(fail) as fail_count,
|
254 |
max(userID) as is_valid_user
|
255 |
FROM {$this->db->base_prefix}wfLogins
|
256 |
WHERE fail = 1
|
257 |
+
AND ctime > $interval
|
258 |
GROUP BY username
|
259 |
ORDER BY fail_count DESC
|
260 |
LIMIT %d
|
387 |
, $ip_bin, $country));
|
388 |
}
|
389 |
|
390 |
+
/**
|
391 |
+
* @param $code
|
392 |
+
* @return string
|
393 |
+
*/
|
394 |
+
public function getCountryNameByCode($code) {
|
395 |
+
static $wfBulkCountries;
|
396 |
+
if (!isset($wfBulkCountries)) {
|
397 |
+
include 'wfBulkCountries.php';
|
398 |
+
}
|
399 |
+
return array_key_exists($code, $wfBulkCountries) ? $wfBulkCountries[$code] : "";
|
400 |
+
}
|
401 |
+
|
402 |
/**
|
403 |
* @return wfActivityReportView
|
404 |
*/
|
lib/wfIssues.php
CHANGED
@@ -129,33 +129,7 @@ class wfIssues {
|
|
129 |
'level' => $level
|
130 |
));
|
131 |
|
132 |
-
|
133 |
-
require_once ABSPATH . WPINC . '/class-smtp.php';
|
134 |
-
$mail = new PHPMailer;
|
135 |
-
|
136 |
-
// Get the site domain and get rid of www.
|
137 |
-
$from_email = 'wordpress@' . preg_replace('/^(https?:\/\/(www.)?)(.+?)(\/)?$/', '$3', site_url());
|
138 |
-
|
139 |
-
$mail->From = apply_filters( 'wp_mail_from', $from_email );
|
140 |
-
$mail->FromName = apply_filters( 'wp_mail_from_name', 'Wordfence' );
|
141 |
-
|
142 |
-
foreach ($emails as $email) {
|
143 |
-
try {
|
144 |
-
$mail->addAddress($email);
|
145 |
-
} catch (phpmailerException $e) {
|
146 |
-
|
147 |
-
}
|
148 |
-
}
|
149 |
-
|
150 |
-
$mail->Subject = $subject;
|
151 |
-
$mail->msgHTML($content);
|
152 |
-
|
153 |
-
try {
|
154 |
-
$mail->send();
|
155 |
-
} catch (phpmailerException $e) {
|
156 |
-
// use wp_mail if there's a problem (which uses PHPMailer anyways :P)
|
157 |
-
wp_mail(implode(',', $emails), $subject, strip_tags($content));
|
158 |
-
}
|
159 |
}
|
160 |
public function deleteIssue($id){
|
161 |
$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
|
129 |
'level' => $level
|
130 |
));
|
131 |
|
132 |
+
wp_mail(implode(',', $emails), $subject, $content, 'Content-type: text/html');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
}
|
134 |
public function deleteIssue($id){
|
135 |
$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
|
lib/wordfenceClass.php
CHANGED
@@ -150,29 +150,39 @@ class wordfence {
|
|
150 |
if(isset($keyData['_isPaidKey']) && $keyData['_isPaidKey']){
|
151 |
$keyExpDays = $keyData['_keyExpDays'];
|
152 |
$keyIsExpired = $keyData['_expired'];
|
153 |
-
if($
|
154 |
-
|
155 |
-
|
156 |
-
wfConfig::
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
wfConfig::set('keyExp7Sent',
|
165 |
-
|
166 |
-
|
167 |
-
wfConfig::set('
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
}
|
173 |
-
} else if($keyIsExpired && (! wfConfig::get('keyExpFinalSent')) ){
|
174 |
-
wfConfig::set('keyExpFinalSent', 1);
|
175 |
-
self::keyAlert("Your Wordfence Premium API Key has Expired!");
|
176 |
}
|
177 |
}
|
178 |
|
@@ -559,9 +569,6 @@ class wordfence {
|
|
559 |
define('WFDONOTCACHE', true); //Don't cache jetpack mobile theme pages.
|
560 |
}
|
561 |
public static function wpRedirectFilter($URL, $status){
|
562 |
-
if(isset($_GET['author']) && preg_match('/\/author\/.+/i', $URL) && wfConfig::get('loginSec_disableAuthorScan') ){ //author query variable is present and we're about to redirect to a URL that starts with http://blah/author/...
|
563 |
-
return home_url(); //Send the user to the home URL (as opposed to site_url() which is not the home page on some sites)
|
564 |
-
}
|
565 |
return $URL;
|
566 |
}
|
567 |
public static function ajax_testAjax_callback(){
|
@@ -1140,7 +1147,7 @@ class wordfence {
|
|
1140 |
}
|
1141 |
public static function ajax_addTwoFactor_callback(){
|
1142 |
if(! wfConfig::get('isPaid')){
|
1143 |
-
return array('errorMsg' => 'Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/wordfence-signup/" target="_blank">Click here to upgrade now.</a>');
|
1144 |
}
|
1145 |
$username = sanitize_text_field($_POST['username']);
|
1146 |
$phone = sanitize_text_field($_POST['phone']);
|
@@ -2594,6 +2601,11 @@ class wordfence {
|
|
2594 |
wfScanEngine::startScan();
|
2595 |
}
|
2596 |
public static function templateRedir(){
|
|
|
|
|
|
|
|
|
|
|
2597 |
$wfFunc = get_query_var('_wfsf');
|
2598 |
|
2599 |
//Logging
|
150 |
if(isset($keyData['_isPaidKey']) && $keyData['_isPaidKey']){
|
151 |
$keyExpDays = $keyData['_keyExpDays'];
|
152 |
$keyIsExpired = $keyData['_expired'];
|
153 |
+
if (!empty($keyData['_autoRenew'])) {
|
154 |
+
if ($keyExpDays > 12) {
|
155 |
+
wfConfig::set('keyAutoRenew10Sent', '');
|
156 |
+
} else if ($keyExpDays <= 12 && $keyExpDays > 0 && !wfConfig::get('keyAutoRenew10Sent')) {
|
157 |
+
wfConfig::set('keyAutoRenew10Sent', 1);
|
158 |
+
$email = "Your Premium Wordfence API Key is set to auto-renew in 10 days.";
|
159 |
+
self::alert($email, "$email To update your API key settings please visit http://www.wordfence.com/zz9/dashboard", false);
|
160 |
+
}
|
161 |
+
} else {
|
162 |
+
if($keyExpDays > 15){
|
163 |
+
wfConfig::set('keyExp15Sent', '');
|
164 |
+
wfConfig::set('keyExp7Sent', '');
|
165 |
+
wfConfig::set('keyExp2Sent', '');
|
166 |
+
wfConfig::set('keyExp1Sent', '');
|
167 |
+
wfConfig::set('keyExpFinalSent', '');
|
168 |
+
} else if($keyExpDays <= 15 && $keyExpDays > 0){
|
169 |
+
if($keyExpDays <= 15 && $keyExpDays >= 11 && (! wfConfig::get('keyExp15Sent'))){
|
170 |
+
wfConfig::set('keyExp15Sent', 1);
|
171 |
+
self::keyAlert("Your Premium Wordfence API Key expires in less than 2 weeks.");
|
172 |
+
} else if($keyExpDays <= 7 && $keyExpDays >= 4 && (! wfConfig::get('keyExp7Sent'))){
|
173 |
+
wfConfig::set('keyExp7Sent', 1);
|
174 |
+
self::keyAlert("Your Premium Wordfence API Key expires in less than a week.");
|
175 |
+
} else if($keyExpDays == 2 && (! wfConfig::get('keyExp2Sent'))){
|
176 |
+
wfConfig::set('keyExp2Sent', 1);
|
177 |
+
self::keyAlert("Your Premium Wordfence API Key expires in 2 days.");
|
178 |
+
} else if($keyExpDays == 1 && (! wfConfig::get('keyExp1Sent'))){
|
179 |
+
wfConfig::set('keyExp1Sent', 1);
|
180 |
+
self::keyAlert("Your Premium Wordfence API Key expires in 1 day.");
|
181 |
+
}
|
182 |
+
} else if($keyIsExpired && (! wfConfig::get('keyExpFinalSent')) ){
|
183 |
+
wfConfig::set('keyExpFinalSent', 1);
|
184 |
+
self::keyAlert("Your Wordfence Premium API Key has Expired!");
|
185 |
}
|
|
|
|
|
|
|
186 |
}
|
187 |
}
|
188 |
|
569 |
define('WFDONOTCACHE', true); //Don't cache jetpack mobile theme pages.
|
570 |
}
|
571 |
public static function wpRedirectFilter($URL, $status){
|
|
|
|
|
|
|
572 |
return $URL;
|
573 |
}
|
574 |
public static function ajax_testAjax_callback(){
|
1147 |
}
|
1148 |
public static function ajax_addTwoFactor_callback(){
|
1149 |
if(! wfConfig::get('isPaid')){
|
1150 |
+
return array('errorMsg' => 'Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/gnl1twoFac3/wordfence-signup/" target="_blank">Click here to upgrade now.</a>');
|
1151 |
}
|
1152 |
$username = sanitize_text_field($_POST['username']);
|
1153 |
$phone = sanitize_text_field($_POST['phone']);
|
2601 |
wfScanEngine::startScan();
|
2602 |
}
|
2603 |
public static function templateRedir(){
|
2604 |
+
// prevent /?author=N scans from disclosing usernames.
|
2605 |
+
if (wfConfig::get('loginSec_disableAuthorScan') && is_author() && !empty($_GET['author']) && is_numeric($_GET['author'])) {
|
2606 |
+
wp_redirect(home_url());
|
2607 |
+
}
|
2608 |
+
|
2609 |
$wfFunc = get_query_var('_wfsf');
|
2610 |
|
2611 |
//Logging
|
lib/wordfenceConstants.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
define('WORDFENCE_API_VERSION', '2.
|
3 |
define('WORDFENCE_API_URL_SEC', 'https://noc1.wordfence.com/');
|
4 |
define('WORDFENCE_API_URL_NONSEC', 'http://noc1.wordfence.com/');
|
5 |
define('WORDFENCE_HACKATTEMPT_URL', 'http://noc3.wordfence.com:9050/');
|
1 |
<?php
|
2 |
+
define('WORDFENCE_API_VERSION', '2.17');
|
3 |
define('WORDFENCE_API_URL_SEC', 'https://noc1.wordfence.com/');
|
4 |
define('WORDFENCE_API_URL_NONSEC', 'http://noc1.wordfence.com/');
|
5 |
define('WORDFENCE_HACKATTEMPT_URL', 'http://noc3.wordfence.com:9050/');
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: mmaunder
|
|
3 |
Tags: wordpress, security, performance, speed, caching, cache, caching plugin, wordpress cache, wordpress caching, wordpress security, security plugin, secure, anti-virus, malware, firewall, antivirus, virus, google safe browsing, phishing, scrapers, hacking, wordfence, securty, secrity, secure, two factor, cellphone sign-in, cellphone signin, cellphone, twofactor, security, secure, htaccess, login, log, users, login alerts, lock, chmod, maintenance, plugin, private, privacy, protection, permissions, 503, base64, injection, code, encode, script, attack, hack, hackers, block, blocked, prevent, prevention, RFI, XSS, CRLF, CSRF, SQL Injection, vulnerability, website security, WordPress security, security log, logging, HTTP log, error log, login security, personal security, infrastructure security, firewall security, front-end security, web server security, proxy security, reverse proxy security, secure website, secure login, two factor security, maximum login security, heartbleed, heart bleed, heartbleed vulnerability, openssl vulnerability, nginx, litespeed, php5-fpm, woocommerce support, woocommerce caching, IPv6, IP version 6
|
4 |
Requires at least: 3.9
|
5 |
Tested up to: 4.2.2
|
6 |
-
Stable tag: 6.0.
|
7 |
|
8 |
Wordfence Security is a free enterprise class security and performance plugin that makes your site up to 50 times faster and more secure.
|
9 |
|
@@ -11,9 +11,9 @@ Wordfence Security is a free enterprise class security and performance plugin th
|
|
11 |
|
12 |
Wordfence starts by checking if your site is already infected. We do a deep server-side scan of your source code comparing it to the Official WordPress repository for core, themes and plugins. Then Wordfence secures your site and makes it up to 50 times faster.
|
13 |
|
14 |
-
Wordfence Security is 100% free. We also offer a Premium API key that gives you
|
15 |
|
16 |
-
You can find our official documentation at [docs.wordfence.com](http://docs.wordfence.com
|
17 |
|
18 |
This is a brief introductory video for Wordfence:
|
19 |
|
@@ -85,7 +85,7 @@ To install Wordfence Security on WordPress Multi-Site installations:
|
|
85 |
|
86 |
== Frequently Asked Questions ==
|
87 |
|
88 |
-
[Visit our support website which contains a FAQ and knowledgebase which is more comprehensive and updated frequently.](http://support.wordfence.com
|
89 |
|
90 |
= What does Wordfence Security do that other WordPress security plugins don't do? =
|
91 |
|
@@ -119,7 +119,7 @@ that we can blog any security threat as soon as it emerges in the wild.
|
|
119 |
= What if I need support? =
|
120 |
|
121 |
All our paid customers receive priority support. Excellent customer service is a key part
|
122 |
-
of being a Wordfence Security member. As free or Premium member can visit [support.wordfence.com](http://support.wordfence.com
|
123 |
|
124 |
= Can I disable certain security features of Wordfence Security? =
|
125 |
|
@@ -172,6 +172,16 @@ fully compatible with both IPv4 and IPv6 whether you run both or only one addres
|
|
172 |
|
173 |
== Changelog ==
|
174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
= 6.0.6 =
|
176 |
* Improvement: Handled uncaught exception when noc1 is not available in 2FA.
|
177 |
* Improvement: Fixed issue with limit-logins mu-plugin on GoDaddy counting first login attempt in 2FA against total allowed login attempts.
|
3 |
Tags: wordpress, security, performance, speed, caching, cache, caching plugin, wordpress cache, wordpress caching, wordpress security, security plugin, secure, anti-virus, malware, firewall, antivirus, virus, google safe browsing, phishing, scrapers, hacking, wordfence, securty, secrity, secure, two factor, cellphone sign-in, cellphone signin, cellphone, twofactor, security, secure, htaccess, login, log, users, login alerts, lock, chmod, maintenance, plugin, private, privacy, protection, permissions, 503, base64, injection, code, encode, script, attack, hack, hackers, block, blocked, prevent, prevention, RFI, XSS, CRLF, CSRF, SQL Injection, vulnerability, website security, WordPress security, security log, logging, HTTP log, error log, login security, personal security, infrastructure security, firewall security, front-end security, web server security, proxy security, reverse proxy security, secure website, secure login, two factor security, maximum login security, heartbleed, heart bleed, heartbleed vulnerability, openssl vulnerability, nginx, litespeed, php5-fpm, woocommerce support, woocommerce caching, IPv6, IP version 6
|
4 |
Requires at least: 3.9
|
5 |
Tested up to: 4.2.2
|
6 |
+
Stable tag: 6.0.7
|
7 |
|
8 |
Wordfence Security is a free enterprise class security and performance plugin that makes your site up to 50 times faster and more secure.
|
9 |
|
11 |
|
12 |
Wordfence starts by checking if your site is already infected. We do a deep server-side scan of your source code comparing it to the Official WordPress repository for core, themes and plugins. Then Wordfence secures your site and makes it up to 50 times faster.
|
13 |
|
14 |
+
Wordfence Security is 100% free and open source. We also offer a Premium API key that gives you Premium Support, Country Blocking, Scheduled Scans, Password Auditing and we even check if your website IP address is being used to Spamvertize. [Click here to sign-up for Wordfence Premium now](http://www.wordfence.com/?utm_source=repo&utm_medium=web&utm_campaign=pluginDescCTA) or simply install Wordfence free and start protecting your website.
|
15 |
|
16 |
+
You can find our official documentation at [docs.wordfence.com](http://docs.wordfence.com/?utm_source=repo&utm_medium=web&utm_campaign=pluginDesc) and our Frequently Asked Questions on our support portal at [support.wordfence.com](https://support.wordfence.com/solution/categories/1000023037/folders/1000035543?utm_source=repo&utm_medium=web&utm_campaign=pluginDesc). We are also active in our community support forums on [wordpress.org](https://wordpress.org/support/plugin/wordfence) if you are one of our free users. Our Premium Support Ticket System is at [support.wordfence.com](https://support.wordfence.com/?utm_source=repo&utm_medium=web&utm_campaign=pluginDesc).
|
17 |
|
18 |
This is a brief introductory video for Wordfence:
|
19 |
|
85 |
|
86 |
== Frequently Asked Questions ==
|
87 |
|
88 |
+
[Visit our support website which contains a FAQ and knowledgebase which is more comprehensive and updated frequently.](http://support.wordfence.com/?utm_source=repo&utm_medium=web&utm_campaign=pluginDesc)
|
89 |
|
90 |
= What does Wordfence Security do that other WordPress security plugins don't do? =
|
91 |
|
119 |
= What if I need support? =
|
120 |
|
121 |
All our paid customers receive priority support. Excellent customer service is a key part
|
122 |
+
of being a Wordfence Security member. As free or Premium member can visit [support.wordfence.com](http://support.wordfence.com/?utm_source=repo&utm_medium=web&utm_campaign=pluginDesc) and where you will find out knowledgebase. If you're a Premium member you can also open a support ticket.
|
123 |
|
124 |
= Can I disable certain security features of Wordfence Security? =
|
125 |
|
172 |
|
173 |
== Changelog ==
|
174 |
|
175 |
+
= 6.0.7 =
|
176 |
+
* Fix: Fixed bug with Top 5 Logins displaying all failed logins opposed to timeframe set by email frequency.
|
177 |
+
* Fix: Fixed bug with /?author=N scan protection not working for authors with no published posts.
|
178 |
+
* Improvement: Fixed Wordfence logo width in dashboard widget on smaller screens.
|
179 |
+
* Improvement: Added country names to flag icons in widget dashboard.
|
180 |
+
* Improvement: Updated issues email to use WordPress' charset instead of ISO-8859-1.
|
181 |
+
* Improvement: Added check to see if premium API key is set to auto-renew and send email reminder prior to renewal.
|
182 |
+
* Improvement: Updated to API version 2.17.
|
183 |
+
* Improvement: Changed auto-renew reminder email to go out 10 days before renewal, 12 days before expiration.
|
184 |
+
|
185 |
= 6.0.6 =
|
186 |
* Improvement: Handled uncaught exception when noc1 is not available in 2FA.
|
187 |
* Improvement: Fixed issue with limit-logins mu-plugin on GoDaddy counting first login attempt in 2FA against total allowed login attempts.
|
views/reports/activity-report.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* @var wfActivityReportView $this
|
4 |
*/
|
5 |
?>
|
6 |
-
<a href="//www.wordfence.com/zz8/"><img src="//www.wordfence.com/wp-content/themes/parallelus-salutation/wfCustomHome/images/wordfenceLogo.png" alt=""/></a>
|
7 |
|
8 |
<h2>Top <?php echo (int) $limit; ?> IP's Blocked</h2>
|
9 |
|
@@ -24,7 +24,7 @@
|
|
24 |
<td><code><?php echo wfUtils::inet_ntop($row->IP) ?></code></td>
|
25 |
<td>
|
26 |
<?php if ($row->countryCode): ?>
|
27 |
-
<img src="//www.wordfence.com/images/flags/<?php echo esc_attr(strtolower($row->countryCode)) ?>.png" class="wfFlag" height="11" width="16">
|
28 |
|
29 |
<?php echo esc_html($row->countryCode) ?>
|
30 |
<?php else: ?>
|
@@ -66,7 +66,7 @@
|
|
66 |
<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
|
67 |
<td>
|
68 |
<?php if ($row->countryCode): ?>
|
69 |
-
<img src="//www.wordfence.com/images/flags/<?php echo strtolower($row->countryCode) ?>.png" class="wfFlag" height="11" width="16">
|
70 |
|
71 |
<?php echo esc_html($row->countryCode) ?>
|
72 |
<?php else: ?>
|
3 |
* @var wfActivityReportView $this
|
4 |
*/
|
5 |
?>
|
6 |
+
<a class="wf-logo" href="//www.wordfence.com/zz8/"><img src="//www.wordfence.com/wp-content/themes/parallelus-salutation/wfCustomHome/images/wordfenceLogo.png" alt=""/></a>
|
7 |
|
8 |
<h2>Top <?php echo (int) $limit; ?> IP's Blocked</h2>
|
9 |
|
24 |
<td><code><?php echo wfUtils::inet_ntop($row->IP) ?></code></td>
|
25 |
<td>
|
26 |
<?php if ($row->countryCode): ?>
|
27 |
+
<img src="//www.wordfence.com/images/flags/<?php echo esc_attr(strtolower($row->countryCode)) ?>.png" class="wfFlag" height="11" width="16" alt="<?php echo esc_attr($row->countryName) ?>" title="<?php echo esc_attr($row->countryName) ?>">
|
28 |
|
29 |
<?php echo esc_html($row->countryCode) ?>
|
30 |
<?php else: ?>
|
66 |
<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
|
67 |
<td>
|
68 |
<?php if ($row->countryCode): ?>
|
69 |
+
<img src="//www.wordfence.com/images/flags/<?php echo strtolower($row->countryCode) ?>.png" class="wfFlag" height="11" width="16" alt="<?php echo esc_attr($row->countryName) ?>" title="<?php echo esc_attr($row->countryName) ?>">
|
70 |
|
71 |
<?php echo esc_html($row->countryCode) ?>
|
72 |
<?php else: ?>
|
wordfence.php
CHANGED
@@ -4,13 +4,13 @@ Plugin Name: Wordfence Security
|
|
4 |
Plugin URI: http://www.wordfence.com/
|
5 |
Description: Wordfence Security - Anti-virus, Firewall and High Speed Cache
|
6 |
Author: Wordfence
|
7 |
-
Version: 6.0.
|
8 |
Author URI: http://www.wordfence.com/
|
9 |
*/
|
10 |
if(defined('WP_INSTALLING') && WP_INSTALLING){
|
11 |
return;
|
12 |
}
|
13 |
-
define('WORDFENCE_VERSION', '6.0.
|
14 |
if(get_option('wordfenceActivated') != 1){
|
15 |
add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error', ob_get_contents()); }
|
16 |
}
|
4 |
Plugin URI: http://www.wordfence.com/
|
5 |
Description: Wordfence Security - Anti-virus, Firewall and High Speed Cache
|
6 |
Author: Wordfence
|
7 |
+
Version: 6.0.7
|
8 |
Author URI: http://www.wordfence.com/
|
9 |
*/
|
10 |
if(defined('WP_INSTALLING') && WP_INSTALLING){
|
11 |
return;
|
12 |
}
|
13 |
+
define('WORDFENCE_VERSION', '6.0.7');
|
14 |
if(get_option('wordfenceActivated') != 1){
|
15 |
add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error', ob_get_contents()); }
|
16 |
}
|