正文:
最近汇站对wordpress的安全问题非常关注。我们应该如何保护我们的wordpress 程序,尽量避免被黑客攻击呢?虽然对于很多技术大牛来说这可能是常识,但对于一些新手来说可能还不太清楚。本文是一篇关于 wordpress 安全防护的入门贴,帮助大家提升 wordpress 程序的安全性。以下是汇站整理的几个方面:
1. wp-login 文件
对于 wordpress 自身系统来说,最直接的危害就是 wp-login.php 这个后台路径已经不再是什么秘密。最好的解决方法就是屏蔽或替换这个后台路径,使其更加隐蔽。以下是一些简单易懂的方法:
– 首先找到 wordpress 根目录下的 wp-login.php 文件,用代码编辑软件打开,搜索 wp_shake_js 找到
if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) )
add_action( 'login_head', 'wp_shake_js', 12 );
在这段?>的下一行加入代码
<?php
if($_GET["aa"]!="bb"){
header('Location: 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 个文件会暴漏出网站所在服务器下的绝对路径,这个信息如果被恶意利用,那后果也是很严重的!为了不被别人发现我们的网站绝对路径,我们需要对以下四个文件进行操作,分别是:
2、/wp-includes/user.php
3、/wp-admin/admin-functions.php
4、/wp-admin/upgrade-functions.php
解决方法就很简单了,分别打开这几个文件,然后在文件的头部的
// <?php
// 下一行添加 error_reporting(0);
即可屏蔽报错的方法还有一个地方会报错,那就是我们 wordpress 主题的目录文件下的 index.php 文件。建议在这个文件中也加入以下代码来屏蔽报错:
如果我们使用的是服务器而不是虚拟主机,最好也到服务器下的 php.ini 文件中关闭 php 报错。一般 php.ini 文件的路径在/usr/local/php/etc 下,修改 php.ini 文件内的 display_errors = off 即可屏蔽整个服务器的 php 报错。
总结一下,通过以上的方法,我们的 wordpress 应该已经非常强大了,至少常见问题都已经解决。当然,世界上总有更高级的问题,这是无法避免的。最后,汇站建议大家在使用服务器 VPS 的情况下,尽量少开放端口,一般只开放 80 和 22 端口即可。端口越多,漏洞越多,安全性就会受到影响。
转载请注明:汇站网 » 你对 wordpress 的安全防护了解多少?