核心原理
.htaccess 是 Apache 服务器的一个配置文件,它允许您在特定目录下覆盖服务器的全局配置,我们可以利用 FilesMatch 指令来匹配特定扩展名的文件,然后使用 Deny from all 指令来禁止所有对这些文件的访问。

(图片来源网络,侵删)
禁止在 uploads 和 data 目录执行脚本(最常用)
这是 DedeCMS 最核心的安全设置。uploads 目录用于上传文件,data 目录用于存放缓存等数据,是黑客最常攻击的目标。
操作步骤:
-
找到
.htaccess文件:- 如果您的网站根目录下没有
.htaccess文件,请新建一个。 - 您可以使用 FTP/SFTP 客户端(如 FileZilla)连接到您的服务器,在网站的根目录(即包含
dede,include,uploads,data等文件夹的目录)中找到它。
- 如果您的网站根目录下没有
-
编辑
.htaccess文件:
(图片来源网络,侵删)- 使用文本编辑器(如 Notepad++, VS Code, Sublime Text)打开该文件。
- 将以下代码添加到文件中,如果文件中已有其他内容,请将其添加到合适的位置(通常放在文件顶部)。
# ----------------------------------------------------- # DedeCMS 安全设置:禁止在特定目录执行脚本 # ----------------------------------------------------- # 1. 禁止在 uploads 目录下执行任何脚本 <Directory "您的网站绝对路径/uploads"> php_flag engine off <FilesMatch "\.(php|php5|phtml|pl|py|jsp|asp|sh|cgi)$"> Order Deny,Allow Deny from all </FilesMatch> </Directory> # 2. 禁止在 data 目录下执行任何脚本 <Directory "您的网站绝对路径/data"> php_flag engine off <FilesMatch "\.(php|php5|phtml|pl|py|jsp|asp|sh|cgi)$"> Order Deny,Allow Deny from all </FilesMatch> </Directory> # 3. (可选但推荐) 禁止在 templets 目录下执行任何脚本 <Directory "您的网站绝对路径/templets"> php_flag engine off <FilesMatch "\.(php|php5|phtml|pl|py|jsp|asp|sh|cgi)$"> Order Deny,Allow Deny from all </FilesMatch> </Directory> # ----------------------------------------------------- -
修改绝对路径:
- 重要! 您必须将
"您的网站绝对路径/uploads"替换为您服务器上uploads目录的真实绝对路径。 - 如何找到绝对路径?
- 通过 PHP 文件查看:在网站根目录创建一个名为
info.php的文件,内容为<?php phpinfo(); ?>,然后在浏览器中访问它,在输出的页面中找到SCRIPT_FILENAME或DOCUMENT_ROOT,这通常能帮助您推断出路径。 - 联系主机商:直接询问您的虚拟主机或云服务器提供商,您的网站根目录的绝对路径是什么。
- 常见路径示例:
/home/username/public_html/uploads/var/www/vhosts/您的域名/httpdocs/uploads/www/wwwroot/您的域名/uploads
- 通过 PHP 文件查看:在网站根目录创建一个名为
- 重要! 您必须将
-
保存并上传:
- 保存修改后的
.htaccess文件。 - 通过 FTP/SFTP 将其上传回服务器的网站根目录。
- 保存修改后的
禁止上传特定类型的文件(更严格)
除了禁止执行,您还可以直接禁止上传某些高危类型的文件。
# -----------------------------------------------------
# DedeCMS 安全设置:禁止上传特定类型的文件
# -----------------------------------------------------
<FilesMatch "\.(php|php3|php4|php5|phtml|pl|py|jsp|asp|sh|cgi|exe|dll)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# -----------------------------------------------------
注意:这段代码通常也放在 .htaccess 文件中,它会在整个网站范围内生效,防止用户通过表单上传这些类型的文件,但请注意,这可能会影响某些需要上传脚本的功能(比如某些复杂的插件),请谨慎使用。
仅允许访问特定文件(最严格)
如果您想在 data 目录中只允许访问 config.cache.php 等少数几个文件,可以使用下面的方法。
# -----------------------------------------------------
# DedeCMS 安全设置:仅允许 data 目录访问特定文件
# -----------------------------------------------------
<Directory "您的网站绝对路径/data">
# 禁止所有访问
Order Deny,Allow
Deny from all
# 但允许访问以下文件
<Files "config.cache.php">
Order Allow,Deny
Allow from all
</Files>
# 如果还有其他需要允许的文件,继续添加
<Files "index.html">
Order Allow,Deny
Allow from all
</Files>
</Directory>
# -----------------------------------------------------
总结与最佳实践
- 首要任务:务必为
uploads和data目录设置禁止执行权限,这是 DedeCMS 安全的基础。 - 路径正确:确保
.htaccess中的Directory路径是您服务器上的绝对路径,而不是相对路径,路径错误将导致配置无效。 - 文件权限:确保
.htaccess文件的权限设置为644或600,不要设置为777,以免被篡改。 - 备份:在修改
.htaccess文件前,最好先备份一份原始文件,以防修改出错导致网站无法访问。 - 测试:设置完成后,尝试在
uploads目录下创建一个test.php文件,然后在浏览器中访问http://您的域名/uploads/test.php,如果出现 403 Forbidden 错误,则说明配置成功。
通过以上设置,您可以极大地提高 DedeCMS 网站的安全性,有效防止上传漏洞带来的风险。
