正文:
最近汇站对wordpress
的安全问题非常关注。我们应该如何保护我们的wordpress
程序,尽量避免被黑客攻击呢?虽然对于很多技术大牛来说这可能是常识,但对于一些新手来说可能还不太清楚。本文是一篇关于 wordpress
安全防护的入门贴,帮助大家提升 wordpress
程序的安全性。以下是汇站整理的几个方面:
1. wp
-login
文件
对于 wordpress
自身系统来说,最直接的危害就是 wp
-login
.php
这个后台路径已经不再是什么秘密。最好的解决方法就是屏蔽或替换这个后台路径,使其更加隐蔽。以下是一些简单易懂的方法:
– 首先找到 wordpress
根目录下的 wp
-login
.php
文件,用代码编辑软件打开,搜索 wp_shake_js
找到
在这段?>的下一行加入代码
cat
ion
: https
://www
.huizhanii
.com
/');
}
?>
将 aa
、bb
替换为自己的内容后,wordpress
后台的地址将变为 https
://www
.huizhanii
.com
/wp
-login
.php
?aa
=bb
结构。这将成为您 wordpress
后台的唯一路径,其他路径将跳转到首页。如果将以下代码放在主题的文件中,每次 wordpress
更新时就不需要再次修改。在主题文件的functions
.php
中添加以下代码即可获得相同的效果!
add_action
('login_enqueue_scripts
','login_protection
');
function
login_protection
(){
if($_GET['aa'] != 'bb')
header
('Location
: https
://www
.huizhanii
.com
/');
}
然而,仔细研究 wordpress
的登录文件后,我们会发现 wordpress
的登录是通过 post
方式提交登录参数的。因此,即使我们隐藏了后台地址,通过 post
提交仍然可以登录到 wordpress
后台。那么我们该如何解决呢?
解决方法是将 wordpress
转移到子目录下,操作步骤如下:
a
、在 wordpress
后台的设置-常规中,将 wordpress
地址(url
)更改为 https
://www
.huizhanii
.com
/aaa
(aaa
为我们自己设置的,没有人知道)。
b
、在网站根目录下创建一个 aaa
文件夹(aaa
为上述提到的名称),然后将根目录下除了 index
.php
、robots
.txt
和.htaccess
之外的所有文件转移到 aaa
文件夹中。现在我们的登录后台地址变为 https
://www
.huizhanii
.com
/aaa
/wp
-login
.php
,而 aaa
是没有人知道的地址。
wordpress
搬到子目录后还要将根目录下 index
.php
文件内容
require
('./wp
-blog
-header
.php
');
修改为:
require
('./aaa
/wp
-blog
-header
.php
');
汇站提醒大家,aaa
是你们自己设置的子目录的名称,要根据实际情况进行设置。
通过这样的设置,可以隐藏后台地址,使黑客无法通过 post
方式提交登录信息。这样一来,黑客就无从下手了。
后台帐号 admin
为了增加安全性,建议大家不要使用 admin
作为网站管理账号登录,因为这样会方便暴力破解。同时,通过?author
=$id
的方式也可以轻松暴露我们的管理账号。例如:huizhanii
.com
/?author
=*(*号为 1-9999 数字),这样就可以轻松地暴露我们的管理账号。一旦黑客获取了账号,再加上市面上的密码字典,破解就只是时间问题了。为了解决这个问题,我们可以在 functions
.php
文件中添加以下代码:
add_filter
( 'request
', 'v7v3_author_link_request
' );
function
v7v3_author_link_request
( $query_vars
) {
if
( array_key_exists
( 'author_name
', $query_vars
) ) {
global
$wpdb
;
$author_id
=$query_vars
['author_name
'];
if
( $author_id
) {
$query_vars
['author
'] = $author_id
;
unset
( $query_vars
['author_name
'] );
}
}
return
$query_vars
;
}
add_filter
( 'author_link
', 'v7v3_author_link
', 10, 2 );
function
v7v3_author_link
( $link
, $author_id
) {
global
$wp_rewrite
;
$author_id
= (int
) $author_id
;
$link
= $wp_rewrite
->get_author_permastruct
();
if
( emptyempty
($link
) ) {
$file
= home_url
( '/' );
$link
= $file
. '?author
=' . $author_id
;
} else
{
$link
= str_replace
('%author
%', $author_id
, $link
);
$link
= home_url
( user_trailingslashit
( $link
) );
}
return
$link
;
}
通过这样的重写,可以改变作者页面的链接方式。
保护 wp
-admin
目录
这个问题引申出一个更深层次的问题,即如何保护 wp
-admin
目录。虽然汇站提供的方法有些麻烦,但绝对安全。方法是在 wp
-admin
目录下创建一个.htaccess
文件,只允许你的 IP
访问。如果你的网络是动态 IP
,那么每次访问前都需要修改.htaccess
文件中的 IP
地址。但这种方法绝对足够安全。.htaccess
文件的内容如下:
order
deny
, allow
allow
from
888.888.888.8888 #Your
IP
Address
deny
from
all
将 IP
地址更改为你自己的 IP
,这样只有你一个人可以访问 wp
-admin
目录!至此,后台目录路径的安全问题解决了!
隐藏 wordpress
头部信息
隐藏不必要出现的信息,如 wordpress
版本号等,可以防止暴力攻击者根据已知漏洞进行攻击。解决方法是在主题文件夹的 functions
.php
文件中添加以下信息,以隐藏 wordpress
不必要出现的信息,同时也有助于网站优化!
//移除头部多余信息
remove_action
('wp_head
','wp_generator
');//禁止在 head
泄露 wordpress
版本号
remove_action
('wp_head
','rsd_link
');//移除 head
中的 rel
="EditURI
"
remove_action
('wp_head
','wlwmanifest_link
');//移除 head
中的 rel
="wlwmanifest
"
remove_action
('wp_head
', 'adjacent_posts_rel_link_wp_head
', 10, 0 );//rel
=pre
remove_action
('wp_head
', 'wp_shortlink_wp_head
', 10, 0 );//rel
=shortlink
remove_action
('wp_head
', 'rel_canonical
' );
绝对路径泄漏修复
wordpress
系统自身来说,有 4 个文件会暴漏出网站所在服务器下的绝对路径,这个信息如果被恶意利用,那后果也是很严重的!为了不被别人发现我们的网站绝对路径,我们需要对以下四个文件进行操作,分别是:
wp
-includes
/registration
-functions
.php
2、/
wp
-includes
/user
.php
3、/
wp
-admin
/admin
-functions
.php
4、/
wp
-admin
/upgrade
-functions
.php
解决方法就很简单了,分别打开这几个文件,然后在文件的头部的
即可屏蔽报错的方法还有一个地方会报错,那就是我们 wordpress
主题的目录文件下的 index
.php
文件。建议在这个文件中也加入以下代码来屏蔽报错:
如果我们使用的是服务器而不是虚拟主机,最好也到服务器下的 php
.ini
文件中关闭 php
报错。一般 php
.ini
文件的路径在/usr
/local
/php
/etc
下,修改 php
.ini
文件内的 display_errors
= off
即可屏蔽整个服务器的 php
报错。
总结一下,通过以上的方法,我们的 wordpress
应该已经非常强大了,至少常见问题都已经解决。当然,世界上总有更高级的问题,这是无法避免的。最后,汇站建议大家在使用服务器 VPS
的情况下,尽量少开放端口,一般只开放 80 和 22 端口即可。端口越多,漏洞越多,安全性就会受到影响。
转载请注明:汇站网 » 你对 wordpress
的安全防护了解多少?