G.B.S.A.T.'s Official Blog

  • 首页
  • 友情链接
  • 联系G.B.S.A.T.
G.B.S.A.T. 的官方博客
探索、分享、进步
  1. 首页
  2. 技术教程
  3. 正文

一些为Wordpress定制的有用的 .htaccess 代码

2024-01-21 1021点热度 1人点赞 0条评论

Wordpress是一款强大的开源网站CMS系统,其不仅仅能用于搭建博客,还可以搭建门户网站,论坛等多种网站形式。理论上Wordpress可以做到搭建出任何网站。但伴随而来的则是众多的安全漏洞,Wordpress的一些功能被黑客所滥用,最后将Wordpress站点变为自己的肉鸡之一。如果你的Wordpress站点使用的是Apache,那么你可以使用.htaccess文件来解决一些Wordpress中存在的安全性问题。

首先,我们需要了解一下什么是.htaccess

.htaccess文件

.htaccess文件(或者分布式配置文件),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

如果你的站点使用的是Apache服务器,那么作为管理员或者站长的你就必须要会有效的配置.htaccess文件,除了可以解决网站安全问题之外,正确有效的配置.htaccess还可以实现各种各样丰富多彩的功能,例如自定义错误页面,网站重定向等,可谓是功能丰富。


Wordpress默认的.htaccess代码

如果你确定你的网站使用的是Apache服务器,但是你却没有在你的网站目录中发现.htaccess文件,那么你可以自己创建一个。绝大多数的Apache服务器都是支持自定义.htaccess文件的。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

请注意:不要编辑任何# BEGIN WordPress和# END WordPress之间的代码。如果需要添加自己的代码,请在下面添加。

如果你的 Wordpress 是多站点模式,那么.htaccess代码是不一样的,更多请参阅 Wordpress Codex


拒绝访问所有.htaccess文件

下面的代码可以实现拒绝访问 WordPress 站点中的所有 .htaccess 文件。这样别人便无法查看你的Web服务器配置,从而防止被探明网站目录等隐私问题。

# Denies access to all .htaccess files
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>


保护wp-config.php文件

wp-config.php文件中含有所有 Wordpress 的配置,其中包含你的数据库登陆名和密码,是一个非常危险的漏洞。我们建议你应该拒绝所有人访问他,但你也可以允许特定的IP地址访问他。

如果您希望允许特定的IP地址访问,那么只需去除# Allow from xx.xx.xx.xxx 前面的 # ,并插入管理员的IP地址来代替xx.xx.xx.xxx。

# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>


防止XML-RPC DDoS攻击

WordPress 站点中默认支持XML-RPC,这是一个远程发布api。虽然它是一个很棒的功能,但它也是WordPress最大的安全漏洞之一,因为黑客很可能利用它来进行DDoS攻击。

如果您不想使用此功能,最好禁用它。和以前一样,你可以通过去除# Allow from xx.xx.xx.xxx前面的 # 和添加管理员(或多个)的IP地址。

# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>


阻止获取目录文件索引列表

大多数WordPress网站默认情况下不会禁止直接访问目录列表,这意味着任何人都可以浏览您服务器中的文件夹和文件,包括媒体上传文件夹和插件文件夹。不用说,这肯定是一个巨大的安全漏洞。幸运的是,您只需要一行代码就可以修复这个漏洞了。此代码段将向想要访问您的目录的任何人返回403错误。

# Prevents directory listing
Options -Indexes


防止用户名穷举

如果你的 Wordpress 站点启用了永久链接功能,那么攻击者可以非常容易的穷举你网站管理员的用户名,从而带来安全隐患。幸运的是,和上面一样,只需要一行代码便可解决这个问题。

# Prevents username enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]


防止图片盗链

虽然这并不是一个安全问题,但是别人很可能会滥用你WP网站中的这个功能,例如把你的网站当成图床使用。会大大的增加你服务器无效的带宽浪费。如果你不希望别人盗用你的链接,那么请务必加上下面这行代码。

# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]

注意:上述代码中的“yourwebsite.com”请务必修改为你自己网站的域名,例如:RewriteCond %{HTTP_REFERER} !^https://www.gbsat.org [NC]


限制对插件和主题PHP文件的直接访问

如果有人直接调用您的插件和主题文件,无论是意外发生还是黑客等攻击者,都会很危险。此代码段来自Acunetix。您可以在他们的博文中阅读有关此漏洞的更多信息。

# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]


设置永久重定向 (301)

你可以使用.htaccess 命令做出永久重定向。首先,你必须添加旧URL,然后按照指向要将用户重定向到的页面的新URL。

# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2

注意:请把oldurl改为你希望定义的旧URL,把newurl改为你希望定义的新URL。


限制对 wp-includes 目录的所有访问

/wp-includes/文件夹包含必需的核心WordPress文件。没有内容、插件、主题或用户可能想要访问的任何其他内容。因此,为了加强安全性,最好禁止对它的所有访问。

# Blocks all wp-includes folders and files
<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>


阻止跨站点脚本(XSS)

以下代码片段来自WP Mix,它可以保护你的站点免受一些常见的XSS攻击,即脚本注入和尝试修改全局和请求变量。

# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F,L]
</IfModule>


启用浏览器缓存

正如我之前提到的,.htaccess不仅有利于安全性和重定向,还可以帮助您管理缓存。下面的代码片段来自Elegant Themes,它通过允许访问者保存某些类型的文件使浏览器缓存成为可能,因此下次访问时他们不必再次下载它们。

# Enables browser caching
<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>


设置自定义错误页面

你可以使用 .htaccess 文件来定义自定义的错误提示页面。首先你需要自己创建一个错误页面文件,例如 error404.html ,接下来上传到你网站的目录中,定位其目录,不要忘记在下列代码中修改你的目录。

你可以为所需的任何HTTP错误状态代码(4XX和5XX状态代码)设置自定义错误页面。

# Sets up custom error pages
ErrorDocument 403 /error403.html
ErrorDocument 404 /error404.html


上述便是一些实用的 .htaccess 代码了,如果有什么更好的 .htaccess 代码,欢迎在下方评论区中提出来。希望所有人的Wordpress站点都可以免受漏洞和攻击。

 

备注:本文部分内容参考自 https://www.hongkiat.com/blog/useful-htaccess-snippets-for-wordpress/

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: .htaccess 技术 技术教程
最后更新:2024-01-21

G.B.S.A.T.

G.B.S.A.T. 的官方公开博客,我们将在此发布很多有用资讯或教程,亦或是分享实用的软件资源,欢迎关注我们! 备注:本站由 Unit B-5 进行维护。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

G.B.S.A.T.

G.B.S.A.T. 的官方公开博客,我们将在此发布很多有用资讯或教程,亦或是分享实用的软件资源,欢迎关注我们!
备注:本站由 Unit B-5 进行维护。

分类
  • 技术教程 / 10篇
  • 综合 / 15篇
  • 资源分享 / 3篇
    • 影视资源 / 1篇
    • 软件资源 / 2篇
最新 热点 随机
最新 热点 随机
详细了解5G技术 - 带您了解什么是5G 从HTTPS到QUIC:网络传输协议的演进 DNS-over-HTTPS (DoH):打造更私密、更安全的网络世界 一篇文章带你了解ESNI技术 TVbox - 一款完全免费无广告的开源安卓电视播放器 Bigjpg - 免费提供AI图片放大清晰的网站
一篇文章带你了解ESNI技术DNS-over-HTTPS (DoH):打造更私密、更安全的网络世界从HTTPS到QUIC:网络传输协议的演进详细了解5G技术 - 带您了解什么是5G
公共NTP授时服务器地址列表 互联网档案馆 - Internet Archive 详细了解5G技术 - 带您了解什么是5G OBS Studio 一款开源免费的直播录屏软件 一篇文章带你了解ESNI技术 可用的 BT Tracker 服务器列表,适用于tracker服务器自动更新
主站

G.B.S.A.T. ALL RIGHTS RESERVED.

站点地图 / sitemap 特别鸣谢:Kratos

特别声明:本网站属于国际网站,不归属于任何国家。

Statement: This website is an international website and does not belong to any country.