Aini99
@Aini99

WordPress 安全性是新手博客中破坏最大的因素之一。在无人监督的 WordPress 安装中,有许多潜在的漏洞无人看管。大多数 WordPress 安装教程都说明了在几分钟内部署 WordPress 的快速简便方法。但是他们错过了一些重要的安全因素。

例如,目录浏览和使用 'admin' 用户名被认为是严重的安全漏洞。今天,我们将看 10 个.htaccess 代码片段,这些片段将有助于提高 WordPress 博客的安全性。在开始之前,让我们快速看一下 htaccess 文件。

什么是.htaccess 文件?

htaccess 文件是每个目录的供 Apache Web 服务器解释的可选配置文件。你可以在该文件中存储各种设置,例如:密码保护目录,阻止 IP,阻止文件或文件夹公开访问等。传统上,.htaccess 文件位于基本 WordPress 安装目录中。默认情况下,它存储永久链接结构。

提示:在开始学习本教程之前,请确保将当前的.htaccess 文件(如果存在)备份在诸如 Dropbox 之类的云存储服务中。如果某些代码片段中断了你的站点,这将回滚到最后一个已知的工作.htaccess 文件。让我们开始。

1. 阻止某个 IP 访问

.htaccess 文件的最佳用途之一是能够拒绝多个 IP 地址访问你的站点。当阻止已知的垃圾邮件发送者和其他可疑或恶意访问源时,此功能很有用。代码是:

# 阻止一个或多个IP地址
# 将IP_ADDRESS_ *替换为IP
<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>

IP_ADDRESS_1 是你要阻止其访问站点的第一个 IP。你可以添加任意数量的 IP。无论这些 IP 地址使用什么用户代理(浏览器)0,它们都将无法从你的服务器访问单个文件。网络服务器将自动拒绝所有访问。

2. 禁用目录浏览

这是 WordPress 网站中破坏最严重的安全漏洞之一。默认情况下,Apache Web 服务器启用目录浏览。这意味着 Web 服务器的根目录(有时称为主目录)中的所有文件和文件夹都可以被访问者访问,并且可以访问。你不希望这样做,因为你不希望人们浏览你的媒体或主题、插件等文件。

没有禁用目录浏览将会对网站造成很大的损失

随机选择 10 个运行 WordPress 的个人或企业网站,则其中 6-8 个不会禁用目录浏览。这样,任何人都可以轻松地嗅探 wp-content /uploads 文件夹或其他没有默认 index.php 文件的目录。禁用目录浏览的代码段:

# 禁止目录浏览
Options All -Indexes

3. 只允许访问 wp-content 的部分文件类型

如你所知,wp-content 文件夹包含最多的主题,插件和所有媒体上载。你当然不希望人们不受限制地访问它。除了禁用目录浏览之外,你还可以拒绝所有文件类型的访问,仅保存其中一部分。本质上,你可以有选择地取消阻止 JPG,PDF,DOCX,CSS,JS 等文件,并拒绝其他文件。为此,请将以下代码片段粘贴到你的.htaccess 文件中:

#禁止访问除以下文件外的所有文件类型
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>

你必须使用代码创建一个新的.htaccess 文件,并将其粘贴到 wp-content 文件夹中。请勿将其放置在基本安装目录中,否则将无法使用。你还可以通过添加 “|” 将任何文件类型添加到列表中 在 “ rar” 之后。上面的列表包含必要的文件 - XML,CSS 和 JavaScript,常见的图像和文档格式,最后是最常用的存档格式。

4. 限制对 wp-includes 的所有访问

wp-includes 包含 WordPress 的核心版本的文件 - 没有任何插件或主题之一。请记住,默认主题仍位于 wp-content /theme 目录中。因此,任何访问者(包括你)都不需要访问 wp-include 文件夹的内容。你可以使用以下代码段禁用访问权限:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

5. 仅允许选定的 IP 地址访问 wp-admin

wp-admin 文件夹包含运行 WordPress 的仪表板所需的文件。在大多数情况下,你的访客不需要访问 WordPress 仪表板,除非他们想要注册一个帐户。一个好的安全措施是仅允许几个选定的 IP 地址访问 wp-admin 文件夹。你可以允许需要访问 WordPress 仪表板的人员(编辑者,贡献者和其他管理员)的 IP。此代码段仅允许固定 IP 访问 wp-admin 文件夹,并拒绝其他用户的访问。

# 通过IP限制登录和管理
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>

确保创建一个新的.htaccess 文件,并将其粘贴到 wp-admin 文件夹而不是基本安装目录中。如果是后者,除了你之外,没有人可以浏览你的网站 - 甚至没有搜索引擎!你当然不希望那样。该措施的一些缺点如下:

  • 如果你的站点允许或促进新用户注册,则几乎不可能跟踪用户数量。例如,在 WPExplorer,如果你想下载我们很棒的免费主题,则必须注册。
  • 拥有动态 IP 地址的人(通常是使用 PPP 或 PPPoE 协议的 ADSL 宽带用户)在每次注销并登录到 ISP 时都会更改其 IP。当然,跟踪所有这些 IP 并将它们添加到 htaccess 文件中是不切实际的。
  • 移动宽带:无论你使用 3G 还是 4G,你的 IP 地址都取决于你所连接的当前基站。假设你正在旅行–从原点每走几英里,你的 IP 就会不断变化。同样,跟踪 htaccess 文件几乎是不可能的。
  • 公共 Wi-Fi 热点:使用公共 Wi-Fi 热点连接到 Internet 时使用凭据非常重要,因为拥有小型软件的孩子可以提取你键入的每个字符。更不用说,每个 Wi-Fi 热点都会有一个唯一的 IP 地址。

值得庆幸的是,所有这些缺点(保存第一个缺点)都可以使用 VPN 进行纠正。如果你将 VPN 设置为仅使用单个 IP 地址进行连接,则只需将其添加到 htaccess 文件中,所有问题都将得到解决。

6. 保护 wp-config.php 和.htaccess

WP-config.php 的文件中包含你的 WordPress 网站的最敏感的访问凭据。它包含数据库名称和访问凭据以及各种其他关键数据以及其他设置。在任何情况下,你都不希望其他人查看此文件。当然,你希望禁用对所有此安全性源(.htaccess 文件本身)的公共访问。你可以使用以下代码禁用对 wp-config.php 的访问:

# 禁止访问wp-config.php文件
<files wp-config.php>
order allow,deny
deny from all
</files>

要拒绝访问所有 htaccess 文件(请记住某些文件可能位于 wp-admin 和其他文件夹中),请使用以下代码片段:

# 禁止访问所有.htaccess文件
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

7. 设置资源防盗链

这是最酷的.htaccess 文件作用之一。当有人使用你网站的图片时,你的服务器带宽会被疯狂地消耗,并且在大多数情况下,你甚至都不知道资源已经被盗链。此代码段消除了该问题,并在检测到热链接时发送此图像。

#防止图片被盗链,将最后一个URL替换为所需的任何图像链接。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

8. 启用浏览器缓存

浏览器缓存也称为客户端缓存,此.htaccess 启用了 WordPress 网站建议的浏览器缓存选项。你也可以在其他项目中使用它 - HTML 网站等。

# 设置浏览器缓存
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

9. 重定向到维护页面

当你迁移 Web 主机或执行某些维护任务时,始终建议创建一个静态的 “维护停机” HTML 文件,以告知访问者该网站正在进行升级或维护操作。只需创建一个 maintenance.html 文件(或任何其他文件名)并将其上传到基本 WordPress 安装目录即可。

将以下代码段粘贴到你的.htaccess 文件中。操作结束后,请确保删除或注释掉这些行以返回到整体操作。你可以通过在每行的开头添加 “#” 来注释掉。

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L] 

10. 自定义错误页面

你还可以使用.htaccess 文件为错误(例如 403、404 和 500)配置用户友好的自定义错误页面。准备好错误页面后 - 假设是 error.html,将其上传到基本的 WordPress 安装目录中。然后将以下代码片段添加到你的.htaccess 文件中,以启用自定义错误页面:

# 自定义403, 404 and 500错误页面
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html
2020 年 06 月 25 日 · 22:09
509
0
2
发表留言

利用.htaccess 文件来提升网站安全性
扫描右侧二维码继续阅读
June 25, 2020
Aini99
by yoniu.

Aini99