简单安全防护
一、服务器防护
1. 端口防护
尽量将端口禁用,尽量不要将端口暴露在公网,尽量仅供127.0.0.1访问 如非必要,尽量不要将服务暴露在公网,尤其是数据库等服务 设置连续登录失败禁用一段时间,防爆破
2. 网站防护
攻击者一般直接使用ip来攻击网站,可以将ip访问的默认网站只写一个首页 上述不利于搜索引擎收录,可以将搜索引擎的域名加入白名单使用Nginx转发 避免Js操作cookie,开启HTTP_ONLY
3. web容器配置
Nginx提供限制访问模块,防护CC与DDOS limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; limit_req_zone $binary_remote_addr zone=allips:10m rate=10r/s;
4. 独立用户
服务器设置用户启动某服务,非该服务用户不允许访问与执行
二、PHP防护
1. 禁用系统函数
非常危险的函数 eval system exec shell_exec pcntl_exec pcntl_fork pcntl_exec 强烈建议禁止的函数 passthru putenv chroot chgrp chown popen proc_open ini_alter ini_restore dl openlog syslog readlink symlink popepassthru pcntl_alarm pcntl_waitpid pcntl_wait pcntl_wifexited pcntl_wifstopped pcntl_wifsignaled pcntl_wifcontinued pcntl_wexitstatus pcntl_wtermsig pcntl_wstopsig pcntl_signal pcntl_signal_dispatch pcntl_get_last_error pcntl_strerror pcntl_sigprocmask pcntl_sigwaitinfo pcntl_sigtimedwait pcntl_getpriority pcntl_setpriority imap_open apache_setenv
2. ThinkPHP
- 及时打补丁,ThinkPHP发布的漏洞警告务必及时跟进打补丁
- 设置全局过滤规则 DEFAULT_FILTER ,防止XSS、SQL注入等
- 查询条件尽量使用数组方式,如果必须使用字符串,那么建议使用预处理机制
- 启动目录务必设置在内部目录,即TP建议的public目录下,防止恶意浏览扫描目录,并且public目录下除了静态资源和启动入口外不要放置其他文件
- 上传文件使用TP提供的ThinkUpload类,提供对文件的类型、后缀、大小及上传文件的合法检查
- 使用强制路由模式,在route.php中配置可访问的路由,未定义的路由访问一律会自动抛出异常
- 对于有明确类型的请求变量,可以在使用param方法的时候使用类型强制转换