随着互联网的普及,越来越多的人开始使用云服务器来搭建自己的网站,WordPress作为一款功能强大、易于使用的开源内容管理系统(CMS),已经成为了很多人首选的建站工具,在部署WordPress网站时,我们需要注意一些安全问题,以防止网站被黑客攻击、篡改或者泄露用户信息,本文将详细介绍在云服务器上部署新的WordPress网站时需要做哪些安全工作。
环境配置
1、更新系统和软件包
为了确保系统的安全性,我们需要及时更新操作系统和软件包,这可以通过以下命令实现:
sudo apt-get update sudo apt-get upgrade
2、安装防火墙
为了阻止未经授权的访问,我们需要在云服务器上安装防火墙,这里以安装UFW防火墙为例:
sudo apt-get install ufw sudo ufw enable
3、限制SSH访问
出于安全考虑,我们可以限制外部用户通过SSH访问我们的服务器,这样,只有本地用户才能通过SSH登录到服务器,可以通过以下命令实现:
sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sudo systemctl restart sshd
4、配置SSL证书
为了保证数据传输的安全性,我们需要为WordPress网站配置SSL证书,可以通过Let's Encrypt免费获取SSL证书,首先安装Certbot客户端:
sudo apt-get install certbot python3-certbot-nginx
然后运行以下命令生成SSL证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
5、禁用默认文件权限
为了防止目录遍历攻击,我们需要禁用默认的文件权限,可以通过以下命令实现:
sudo find /var/www/html -type f -exec chmod ugo-rwx {} \;
WordPress安全设置
1、修改数据库名称和用户名密码
在安装WordPress后,我们需要修改数据库名称、用户名和密码,以增加安全性,可以在wp-config.php文件中找到这些信息:
define('DB_NAME', 'your_database_name'); // 数据库名称 define('DB_USER', 'your_database_user'); // 数据库用户名 define('DB_PASSWORD', 'your_database_password'); // 数据库密码
2、启用HTTPS和GZip压缩
为了提高网站的安全性,我们可以启用HTTPS和GZip压缩,需要购买一个SSL证书,在wp-config.php文件中添加以下代码:
define('FORCE_SSL_ADMIN', true); // 强制管理员使用https访问后台 define('FORCE_TLS_ADMIN', true); // 强制管理员使用tls访问后台 add_filter('theme_supports', 'force_ssl_theme'); // 强制主题支持https和tls协议 function force_ssl_theme($supports) { return $supports + array('https://'); } // 支持https协议的主题列表中添加https://前缀;同时支持tls协议的主题列表中添加tls://前缀;如果不支持https或tls协议的主题则不会出现在列表中。$supports = array('http://' => false); // 不支持http协议的主题列表中移除http://前缀;$supports = array('https://' => true); // 支持https协议的主题列表中添加https://前缀;$supports = array('ftp://' => false); // 不支持ftp协议的主题列表中移除ftp://前缀;$supports = array('ssl://' => true); // 支持ssl协议的主题列表中添加ssl://前缀;$supports = array('tls://' => true); // 支持tls协议的主题列表中添加tls://前缀;$supports = array('mailto://' => false); // 不支持mailto协议的主题列表中移除mailto://前缀;$supports = array('tel://' => false); // 不支持tel协议的主题列表中移除tel://前缀;$supports = array('file://' => false); // 不支持file协议的主题列表中移除file://前缀;$supports = array('data://' => false); // 不支持data协议的主题列表中移除data://前缀;$supports = array('http:///*' => false); // 不支持http*协议的主题列表中移除http//*前缀;$supports = array('https:///*' => true); // 支持https*协议的主题列表中添加https//*前缀;$supports = array('ftp:///*' => false); // 不支持ftp*协议的主题列表中移除ftp//*前缀;$supports = array('ssl:///*' => true); // 支持ssl*协议的主题列表中添加ssl//*前缀;$supports = array('tls:///*' => true); // 支持tls*协议的主题列表中添加tls//*前缀;$supports = array('mailto:/*' => false); // 不支持mailto*协议的主题列表中移除mailto:/*前缀;$supports = array('tel:/*' => false); // 不支持tel*协议的主题列表中移除tel:/*前缀;$supports = array('file:/*' => false); // 不支持file*协议的主题列表中移除file:/*前缀;$supports = array('data:/*' => false); // 不支持data*协议的主题列表中移除data:/*前缀;return $supports;} add_filter('admin_url', 'force_admin_url'); function force_admin_url($url) { if (is_admin()) { return site_url('/wp-admin'); } else { return $url; } } add_filter('login_url', 'force_login_url'); function force_login_url($url) { if (!is_multisite() && is_admin()) { return site_url('/wp-login.php?redirect_to=http%3A%2F%2F'.home_url()); } else { return $url; } } ``` 3、防止SQL注入和XSS攻击 为了防止SQL注入和XSS攻击,我们需要对用户输入进行过滤,可以使用WordPress内置的函数,如sanitize_text_field()
和strip_tags()
等。
$username = strip_tags($_POST['username']); // 对用户名进行过滤和转义,防止XSS攻击和SQL注入;$password = sanitize_text_field($_POST['password']); // 对密码进行过滤和转义,防止XSS攻击和SQL注入;```
4、防止跨站请求伪造(CSRF)攻击
为了防止CSRF攻击,我们需要在表单中添加CSRF令牌,可以使用WordPress内置的wp_create_nonce()
函数生成令牌。
``php $csrftoken = wp_create_nonce(basename(__FILE__)); echo '<input type="hidden" name="csrfmiddlewaretoken" value="'.$csrftoken.'">';
``
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/195629.html