以下是在CentOS上为Laravel应用实施安全防护的关键措施:
系统级安全
- 更新系统与软件包
定期执行 sudo yum update
,修复系统漏洞。
- 配置防火墙
使用 firewalld
限制仅开放必要端口(如HTTP 80、HTTPS 443)。
- 启用SELinux
设置 SELINUX=enforcing
,并配置正确的上下文(如 httpd_sys_content_t
)。
- 强化用户权限
- 禁用
root
远程登录,使用普通用户+sudo
操作。
- 为Web服务器(如Nginx/Apache)创建专用用户,并限制其权限。
Laravel应用级安全
- 依赖与框架更新
- 定期执行
composer update
,并通过工具(如Dependabot)监控依赖漏洞。
- 移除未使用的依赖包,降低攻击面。
- 防范常见漏洞
- SQL注入:使用Eloquent ORM或查询构建器,避免原生SQL。
- XSS攻击:利用Blade模板自动转义,或手动调用
e()
函数。
- CSRF攻击:启用Laravel内置CSRF令牌(表单添加
@csrf
)。
- 敏感数据保护
- 使用
bcrypt
或 Argon2i
哈希存储密码,避免明文存储。
- 将API密钥、数据库密码等存入
.env
文件,并通过 chmod 600
限制访问。
- 文件与目录权限
- 设置项目目录权限为
755
,文件为 644
,存储目录(storage
/bootstrap/cache
)设为 775
并归属Web服务器用户。
- 若启用SELinux,需为存储目录设置
httpd_sys_rw_content_t
上下文。
- HTTPS与加密
- 使用Let’s Encrypt获取免费SSL证书,强制跳转HTTP至HTTPS。
- 对敏感数据传输使用HTTPS,配置CSP(内容安全策略)防止恶意资源加载。
监控与运维
- 日志与审计
- 启用Laravel日志记录(
config/logging.php
),并定期分析异常。
- 使用工具(如ELK Stack、Sentry)监控应用错误和安全事件。
- 定期安全审计
- 通过工具(如OWASP ZAP、Nikto)扫描漏洞,修复发现的问题。
- 每季度进行代码审计,检查潜在逻辑漏洞。
其他最佳实践
- 限制文件上传:验证文件类型、大小,存储至非Web可访问目录。
- 速率限制:通过中间件限制API请求频率,防止暴力破解。
- 备份策略:定期备份数据库和项目文件,存储至异地安全位置。
参考来源: