定期更新CentOS系统和所有软件包(包括PHP、ThinkPHP框架、Web服务器),以修复已知安全漏洞。使用命令:sudo yum update -y。
www-data),避免权限冲突:sudo chown -R www-data:www-data /path/to/thinkphp/project。755权限(防止其他用户写入),上传目录(如uploads)赋予775权限(允许Web服务器写入):sudo chmod -R 755 /path/to/project、sudo chmod -R 775 /path/to/project/uploads。777权限,降低被恶意写入的风险。setenforce 0。/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled,并重启服务器。chcon -R -t httpd_sys_rw_content_t /path/to/project/uploads。display_errors,避免泄露敏感信息:display_errors = Off。256M)和脚本最大执行时间(如30秒):memory_limit = 256M、max_execution_time = 30。open_basedir,限制PHP脚本只能访问项目目录和临时目录:open_basedir = "/path/to/project:/tmp"。app_debug = false,避免显示详细的错误堆栈信息。Validator类对用户输入进行严格验证(如长度、格式),防止SQL注入和XSS攻击:$data = $request->post();
$validate = Validator::make($data, [
'username' => 'require|max:25|min:3',
'email' => 'require|email'
]);
if (!$validate->check()) {
$this->error('参数错误');
}
$user = Db::name('users')->where('username', $username)->find();
2MB)和类型(如jpg/png/gif),并对上传文件进行安全检查:$file = $request->file('file');
$info = $file->validate(['size' => 1024*1024*2, 'ext' => 'jpg,png,gif']);
if (!$info) {
$this->error('文件大小或类型错误');
}
$file->move(public_path('uploads'));
file或Redis,并启用会话加密:'session' => [
'type' => 'file',
'expire' => 1800,
'encrypt' => true,
],
config.php添加deny_module_list(如['common', 'admin']),并在public目录下创建随机命名的后台入口文件(如admin_d75KABNWt.php),避免后台路径被猜测。runtime和upload目录中的PHP文件执行:location ~* /(runtime|upload)/(.*\.php)$ {
return 403;
}
rewrite规则),隐藏URL中的参数,增加攻击难度。limit_req模块或第三方工具(如Fail2Ban),限制单个IP的访问频率,防止DDoS攻击。