封面
版权信息
内容提要
序
推荐语录
前言
名词解释
第1章 PHP项目安全概述
1.1 PHP项目安全形势不容乐观
1.2 PHP项目安全问题产生的原因
1.3 PHP项目安全原则
1.3.1 不可信原则
1.3.2 最小化原则
1.3.3 简单就是美
1.3.4 组件的安全
1.4 小结
第2章 PHP项目安全基础
2.1 信息屏蔽
2.1.1 屏蔽PHP错误信息
2.1.2 防止版本号暴露
2.2 防止全局变量覆盖
2.3 使用PHP的访问限制
2.3.1 文件系统限制
2.3.2 远程访问限制
2.3.3 开启安全模式
2.3.4 禁用危险函数
2.4 PHP中的Cookie安全
2.4.1 Cookie的HttpOnly
2.4.2 Cookie的Secure
2.4.3 指定Cookie的使用范围
2.5 PHP的安装与升级
2.5.1 尽量减少非必要模块加载
2.5.2 使用第三方安全扩展
2.6 小结
第3章 PHP编码安全
3.1 弱数据类型安全
3.1.1 Hash比较缺陷
3.1.2 bool比较缺陷
3.1.3 数字转换比较缺陷
3.1.4 switch比较缺陷
3.1.5 数组比较缺陷
3.2 PHP代码执行漏洞
3.2.1 代码执行的函数
3.2.2 代码执行防御
3.3 PHP变量安全
3.3.1 全局变量覆盖
3.3.2 动态变量覆盖
3.3.3 函数extract()变量覆盖
3.3.4 函数import_request_variables()变量覆盖
3.3.5 函数parse_str()变量覆盖
3.4 URL重定向安全
3.5 请求伪造攻击
3.5.1 服务器请求伪造
3.5.2 SSRF漏洞的危害
3.5.3 在PHP中容易引起SSRF的函数
3.5.4 容易造成SSRF的功能点
3.5.5 SSRF漏洞防御
3.6 文件上传安全
3.6.1 文件上传漏洞的危害
3.6.2 文件上传漏洞
3.6.3 检查文件类型防止上传漏洞
3.6.4 检查文件扩展名称防止上传漏洞
3.6.5 文件上传漏洞的综合防护
3.7 避免反序列化漏洞
3.8 小结
第4章 PHP项目中的常见漏洞与防护
4.1 SQL注入漏洞
4.1.1 什么是SQL注入
4.1.2 报错注入
4.1.3 普通注入
4.1.4 隐式类型注入
4.1.5 盲注
4.1.6 宽字节注入
4.1.7 二次解码注入
4.2 SQL注入漏洞防护
4.2.1 MySQL预编译处理
4.2.2 PHP使用MySQL的预编译处理
4.2.3 校验和过滤
4.2.4 宽字节注入防护
4.2.5 禁用魔术引号
4.3 XML注入漏洞防护
4.4 邮件安全
4.4.1 邮件注入
4.4.2 防止邮件注入
4.5 PHP组件漏洞防护
4.5.1 RSS安全漏洞
4.5.2 PHPMailer漏洞
4.5.3 OpenSSL漏洞
4.5.4 SSL v2.0协议漏洞
4.6 文件包含安全
4.6.1 文件包含漏洞
4.6.2 避免文件包含漏洞
4.7 系统命令注入
4.7.1 易发生命令注入的函数
4.7.2 防御命令注入
4.8 小结
第5章 PHP与客户端交互安全
5.1 浏览器跨域安全
5.1.1 浏览器同源策略
5.1.2 浏览器跨域资源共享
5.1.3 JSONP资源加载安全
5.2 XSS漏洞防御
5.2.1 反射型XSS
5.2.2 存储型XSS
5.2.3 DOM型XSS
5.2.4 通过编码过滤和转换进行防御
5.2.5 开启HttpOnly防御XSS
5.2.6 对Cookie进行IP绑定
5.2.7 浏览器策略防御XSS
5.3 警惕浏览器绕过
5.4 跨站请求伪造防御
5.4.1 CSRF请求过程
5.4.2 CSRF防御方法
5.5 防止点击劫持
5.6 HTTP响应拆分漏洞
5.7 会话攻击安全防御
5.7.1 会话泄露
5.7.2 会话劫持
5.7.3 会话固定
5.8 小结
第6章 PHP与密码安全
6.1 用户密码安全
6.1.1 加密密码
6.1.2 密码加盐
6.1.3 定期修改
6.2 防止暴力破解
6.3 随机数安全
6.4 数字摘要
6.5 MAC和HMAC简介
6.6 对称加密
6.7 非对称加密
6.8 小结
第7章 PHP项目安全进阶
7.1 单一入口
7.1.1 实现方式
7.1.2 单一入口更安全
7.2 项目部署安全
7.2.1 目录结构
7.2.2 目录权限
7.2.3 避免敏感配置硬编码
7.3 保障内容安全
7.3.1 不安全的HTTP传输
7.3.2 HTTPS传输更安全
7.3.3 HTTPS证书未验证
7.3.4 防止盗链
7.3.5 敏感词
7.4 防止越权和权限控制
7.4.1 什么是越权访问
7.4.2 造成越权的原因
7.4.3 RBAC控制模型
7.4.4 系统鉴权
7.4.5 系统隔离
7.5 API接口访问安全
7.5.1 IP白名单
7.5.2 摘要认证
7.5.3 OAuth认证
7.6 防止接口重放
7.6.1 使用时间戳
7.6.2 使用Nonce
7.6.3 同时使用时间戳和Nonce
7.7 小结
第8章 PHP业务逻辑安全
8.1 短信安全
8.1.1 短信的安全隐患
8.1.2 短信安全策略
8.2 敏感信息泄露
8.2.1 登录密码泄露
8.2.2 登录信息泄露
8.2.3 资源遍历泄露
8.2.4 物理路径泄露
8.2.5 程序使用版本泄露
8.2.6 JSON劫持导致用户信息泄露
8.2.7 源代码泄露
8.3 人机识别策略
8.3.1 图片验证码
8.3.2 短信验证码
8.3.3 语音验证码
8.3.4 其他验证方式
8.4 常见业务流程安全
8.4.1 注册安全
8.4.2 登录安全
8.4.3 密码找回安全
8.4.4 修改密码安全
8.4.5 支付安全
8.5 其他业务安全
8.6 小结
第9章 应用软件安全
9.1 应用指纹安全
9.2 服务器端口安全
9.3 Apache的使用安全
9.3.1 运行安全
9.3.2 访问安全
9.3.3 隐藏Apache版本号
9.3.4 目录和文件安全
9.3.5 防止目录遍历
9.3.6 日志配置
9.3.7 413错误页面跨站脚本漏洞
9.3.8 上传目录限制
9.4 Nginx的使用安全
9.4.1 运行安全
9.4.2 项目配置文件
9.4.3 日志配置
9.4.4 目录和文件安全
9.4.5 隐藏版本号
9.4.6 防止目录遍历
9.4.7 Nginx文件类型错误解析漏洞
9.4.8 IP访问限制
9.5 MySQL的使用安全
9.5.1 运行安全
9.5.2 密码安全
9.5.3 账号安全
9.5.4 数据库安全
9.5.5 限制非授权IP访问
9.5.6 文件读取安全
9.5.7 常用安全选项
9.5.8 数据安全
9.6 Redis的使用安全
9.6.1 密码安全
9.6.2 IP访问限制
9.6.3 运行安全
9.7 Memcache的使用安全
9.7.1 IP访问限制
9.7.2 使用SASL验证
9.8 小结
第10章 企业研发安全体系建设
10.1 微软工程项目安全简介
10.2 OWASP软件保障成熟度模型简介
10.3 建立合理的安全体系
10.3.1 制定安全规范标准
10.3.2 业务需求安全分析
10.3.3 编码过程安全
10.3.4 进行安全测试
10.3.5 线上安全
10.4 安全应急响应
10.5 小结
附录
附录1 PHP各版本漏洞
附录2 常见PHP开源系统指纹
更新时间:2020-05-06 15:59:14