安全设置

  • 研发部

学前指引

在利用 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

#禁止访问缓存目录
location ^~ /data/runtime/ {
    deny all;
}
# 禁止 /uploads/ 目录下的 PHP 执行
location /uploads/ {
    location ~ \.php$ {
        deny all;
    }
}
# 禁止 /static/ 目录下的 PHP 执行
location /static/ {
    location ~ \.php$ {
        deny all;
    }
}
# 禁止 /templates/ 目录下的 PHP 执行
location /templates/ {
    location ~ \.php$ {
        deny all;
    }
}

 

Apache环境

runtime目录不允许web访问:在data或 /data/runtime/目录下创建.htaccess文件写入如下代码

RewriteEngine On
RewriteRule ^ - [F]

禁止执行危险文件:可在站点根uploads、static、templates三个目录中创建.htaccess文件写入如下代码

<IfModule mod_rewrite.c>
    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应用的常见攻击,例如:

跨站脚本(XSS):攻击者将恶意脚本注入网页,危害用户安全
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() 等)。例如:

disable_functions = phpinfo,exec,passthru,shell_exec,system