Web安全可以分为:系统/服务器安全,DB安全,代码安全,业务安全,登录安全等
服务器安全:
- php-fpm的启动用户的设置,不要以root启动,master就root,worker不能是root,一般为nobody或www。php-fpm.conf配置文件里设置
- mysql的启动用户
- nginx的启动用户,非root启动,一般用nobody启动
- 上传目录和下载目录的权限的设置,上传文件的文件名校验等
- php.ini文件,disable_functions设置关闭危险函数,关闭注册全局变量(register_globals off),magic_quotes_gpc on 防止sql注入,display_errors=off 关闭错误显示
- 脚本,webroot等目录的权限设置
- 线上debug关掉
- open_basedir设置,避免php脚本访问不应该访问的文件
- 服务器的安全组入站规则,iptable设置
DB安全:
- 账号密码密文存储
- web账号,运维账号,值班账号分开
- 每个账号授权的host 设置适宜,不能扩大
登录安全:
- 校验码+噪点
- 登录密码的复杂性校验,字母+数字+大小写+非连续数字
- 多次登录失败(冻结账号)
- 离职的账号不能登录(如果内部平台的话,可以考虑)
- 三个月无feed的账号可以冻结(如果是内部平台的话,可以考虑)
代码安全:
- 注意人为输入的内容输出到页面的需要clean,防止xss注入
- 注意sql注入,连接sql时,要对人为输入的内容clean。
业务安全:
- 视具体业务情况做适当的校验