学前指引
在利用 FoxCMS 进行网站的构建与内容管理过程中,采取有效的安全措施对于保护您的网站免受潜在威胁至关重要。为了确保您的网站安全稳固,我们提供了一系列关键的安全建议。
● 目录权限设置
正确设置文件和目录的权限是保障网站安全的基础。根据最小权限原则:
● 对于不需要修改的文件,应设置为 555 权限(所有者只读不可写)。
● 对于需要执行写操作的目录(如缓存、附件目录),应设置为 755 权限(所有者可读写,其他用户仅可读和执行)。
● 接入WAF(Web 应用防火墙)
尽管 FoxCMS 可能已经内置了一些安全机制,但由于其代码开源,仍可能成为黑客的目标。接入 WAF 是一种有效的防御手段,可以保护您的网站免受 SQL 注入、跨站脚本(XSS)等多种类型的网络攻击。
● 限制目录/文件类型访问
通过配置 Apache 或 Nginx 等 Web 服务器,您可以限制对敏感目录或特定文件类型的访问,从而增强安全性。例如,禁止直接访问配置文件或数据库备份文件等敏感资源。
● 保持软件更新
定期更新 FoxCMS 核心及其插件、模块至最新版本。开发者经常发布包含安全补丁和性能改进的新版本,及时更新可以帮助您抵御最新的安全威胁。
● 服务器安全加固
● 最小化开放端口:仅开放80或443端口,关闭不必要开放的端口并使用防火墙规则限制访问,可以减少潜在的安全威胁和攻击面。
● 优化服务器配置:合理调整服务器设置,包括更新与补丁管理、启用详细日志记录及监控、以及为站点或用户设置资源限制,有助于提升服务器的整体安全性与稳定性。
● 定期备份
制定并实施一个常规的数据备份计划,确保在发生意外时能够快速恢复网站数据和数据库。建议将备份存储在与主服务器不同的物理位置或云服务中,以增加数据的安全性。
设置目录权限
部署上线后,将站点根目录和所有子目录设置555只读权限
仅对以下目录设置755写入权限:
data/runtime/:缓存目录
uploads/:文件上传目录
限制文件类型访问
Nginx环境
runtime目录不允许web访问
uploads、static、templates三个目录禁止执行PHP
deny all;
}
location /uploads/ {
location ~ \.php$ {
deny all;
}
}
location /static/ {
location ~ \.php$ {
deny all;
}
}
location /templates/ {
location ~ \.php$ {
deny all;
}
}
Apache环境
runtime目录不允许web访问:在data或 /data/runtime/目录下创建.htaccess文件写入如下代码
RewriteRule ^ - [F]
禁止执行危险文件:可在站点根uploads、static、templates三个目录中创建.htaccess文件写入如下代码
RewriteRule ^.*\.(php|php3|php4|php5|php7|pht|phtml|asp|aspx|jsp|exe|htm|perl|cgi|asa) - [F]
</IfModule>
WAF(Web 应用防火墙)
随着互联网的快速发展,企业和个人对网站的依赖程度日益增加,但与此同时,网络攻击的频率和复杂性也在不断上升。Web应用防火墙(WAF,Web Application Firewall)作为一种专门用于保护网站和Web应用的安全工具,已经成为现代网络安全架构中不可或缺的一部分。
WAF能够有效识别和阻止针对Web应用的常见攻击,例如:
SQL注入:攻击者通过恶意输入代码操控数据库,窃取或篡改数据
跨站请求伪造(CSRF):攻击者诱导用户执行非预期的操作,可能造成账户劫持或数据泄露
抵御DDoS攻击:一种常见的网络攻击形式,通过大量恶意流量使目标服务器瘫痪
文件包含漏洞:攻击者利用服务器配置漏洞访问敏感文件或执行恶意代码
恶意扫描:攻击者使用自动化工具对网站或服务器进行探测,这些扫描活动消耗着服务器资源
常见的WAF(Web应用防火墙)类型主要分为以下几种,它们各自具有不同的特点和适用场景:
● 软件WAF:软件WAF是一种安装在服务器上的应用程序,可以与多种Web服务器和应用程序框架集成,如Apache、Nginx、IIS等。它提供了灵活性和易于配置的优点,适合中小型企业或个人网站使用。
● 反向代理模式:在反向代理模式下,WAF防火墙作为客户端请求和服务器之间的中介,所有客户端的HTTP/HTTPS请求首先到达WAF,经过过滤、检测等安全处理后,再将请求转发给真实的Web服务器;响应也通过同样的路径返回给客户端。这种模式的好处在于它可以隐藏Web服务器的真实IP地址,并提供额外的安全层来保护后台的应用程序不受攻击。
● 云WAF:云WAF是一种基于云的服务,用户不需要自己维护硬件或软件,只需将Web应用程序的流量转发到云端进行处理。如:阿里云WAF
● 硬件WAF:硬件WAF通常作为一个物理设备部署在网络中,也可以支持反向代理模式。硬件设备作为网络中的一个节点,所有进出Web服务器的流量都需要经过这个设备进行过滤和监控。硬件WAF一般提供更高的性能和稳定性,适合大型企业或者对安全性要求极高的环境。
PHP安全加固
在生产环境中,为了提升系统的安全性,避免敏感信息泄露至关重要,通过以下配置可以有效保护系统免受信息泄露的风险:
● 关闭错误信息显示
在 php.ini 文件中,搜索display_errors,设置 display_errors = Off,禁止将 PHP 的错误信息(如警告、通知或致命错误)直接输出到浏览器。这可以防止潜在的敏感信息(如文件路径、数据库结构等)暴露给用户。
● 禁用危险函数
在 php.ini 文件中,找到 disable_functions 配置项,如果该项不存在,则可以手动添加。通过 disable_functions 配置项禁用高风险函数(如 phpinfo()、exec()、shell_exec() 等)。例如: