简单安全防护

一、服务器防护

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


  1. 及时打补丁,ThinkPHP发布的漏洞警告务必及时跟进打补丁
  2. 设置全局过滤规则 DEFAULT_FILTER ,防止XSS、SQL注入等
  3. 查询条件尽量使用数组方式,如果必须使用字符串,那么建议使用预处理机制
  4. 启动目录务必设置在内部目录,即TP建议的public目录下,防止恶意浏览扫描目录,并且public目录下除了静态资源和启动入口外不要放置其他文件
  5. 上传文件使用TP提供的Think\Upload类,提供对文件的类型、后缀、大小及上传文件的合法检查
  6. 使用强制路由模式,在route.php中配置可访问的路由,未定义的路由访问一律会自动抛出异常
  7. 对于有明确类型的请求变量,可以在使用param方法的时候使用类型强制转换