保持系统与框架更新
定期更新CentOS系统(通过sudo yum update
命令)及Laravel框架、依赖组件(如Composer依赖包),及时修补已知安全漏洞。可使用自动化工具(如Dependabot、Renovate)监控依赖包的安全更新,确保系统与框架处于最新安全状态。
强化系统账户与权限管理
禁用root以外的超级用户,删除不必要的系统账号及组,降低攻击面。设置复杂用户口令(包含大小写字母、数字、特殊字符,长度超过10位),并定期强制更新。使用chattr +i
命令锁定关键系统文件(如/etc/passwd
、/etc/shadow
),防止未经授权的修改。
配置防火墙与网络安全
使用CentOS自带的firewalld
或iptables
配置防火墙规则,仅开放必要端口(如HTTP的80端口、HTTPS的443端口、SSH的22端口),限制对服务器的非必要访问。通过安全组或ACL进一步管理容器与服务的网络访问,防止非法IP接入。
优化Laravel应用安全配置
php artisan make:auth
快速生成认证脚手架。实施细粒度访问控制,使用策略类(Policy)定义用户对资源的操作权限(如update
、delete
),避免越权访问。@csrf
指令),验证表单提交的合法性,有效防止跨站请求伪造攻击。required
、email
、max:255
),拒绝不符合规则的数据。避免使用原始SQL查询(如DB::select('SELECT * FROM users WHERE id = '.$id)
),优先采用Eloquent ORM或查询构建器(如User::where('id', $id)->first()
),自动处理参数绑定,防止SQL注入。.env
中设置SESSION_SECURE_COOKIE=true
启用HTTPS-only,SESSION_HTTP_ONLY=true
禁止JavaScript访问),设置合理的会话过期时间(如SESSION_LIFETIME=120
分钟)。使用Laravel默认的bcrypt
或Argon2i
算法哈希用户密码(通过Hash::make($password)
),避免明文存储密码。数据传输与敏感信息保护
通过.env
文件设置应用URL为HTTPS(如APP_URL=https://yourdomain.com
),并创建HTTPS强制跳转中间件(检查Request
对象的secure
属性,若为false
则重定向至HTTPS),确保所有数据传输均通过SSL/TLS加密。使用Laravel的encrypt
函数(如encrypt($sensitiveData)
)加密敏感数据(如用户手机号、身份证号),存储时自动解密,防止数据泄露。
启用内容安全策略(CSP)
通过自定义中间件配置CSP响应头(如Content-Security-Policy: default-src 'self'; script-src 'self' cdn.example.com; style-src 'self' 'unsafe-inline'
),限制页面可加载的资源来源(如脚本、样式、图片),有效防御跨站脚本攻击(XSS)。可使用laravel-csp
包简化CSP配置。
日志监控与安全审计
利用Laravel的日志功能(在.env
中设置LOG_CHANNEL=stack
,支持daily
、slack
等通道)记录应用活动(如用户登录、数据库操作、异常错误),便于后续追溯。集成第三方监控工具(如Sentry、New Relic),实时监控应用性能与异常(如500错误、慢查询)。使用fail2ban
工具分析日志,自动封禁频繁尝试登录的恶意IP(如SSH认证失败超过5次),提升系统安全性。
定期安全扫描与代码审计
使用enlightn/security-checker
工具扫描Laravel应用,识别已知安全漏洞(如过时的依赖包、配置错误),生成详细报告并修复。定期进行代码审计(通过静态分析工具如PHPStan、Psalm),检查代码中的潜在安全问题(如未验证的用户输入、硬编码的敏感信息),确保代码质量与安全性。