文章目录
- WEB前后端漏洞分析与防御技巧--第二部分
- 第五章 传输安全
- HTTP窃听
- HTTP篡改
- HTTPS
- 中间人攻击
- 如何确定服务器身份
- 第六章 密码安全
- 密码-MD5单向变换
- 单向变换彩虹表
- 密码(加盐和多次哈希)
- 计算盐值和加密密码的方式
- 密码-帮助用户加强复杂度
- 密码-变换次数越多越安全
- 密码-密码传输的安全性
- 第七章 接入层注入问题
- SQL注入
- SQL注入危害
- SQL注入防御
- NoSQL注入和防御
- 第八章 接入层上传问题
- 上传漏洞防御
- 第九章 社会工程学和信息泄露
- 信息泄露
- 信息泄露的途径
- 社会工程学
- OAUTH思想
- 利用OAUTH思想防止资料泄露
- 第十章 其他安全问题
- 拒绝服务攻击DOS
- 常用攻击方式
- 分布式拒绝服务攻击DDOS
- DOS攻击防御
- DOS攻击预防
- 重放攻击
- 重放攻击的后果
- 重放攻击的防御
WEB前后端漏洞分析与防御技巧–第二部分
第五章 传输安全
HTTP传输窃听
HTTP窃听
- 窃听用户密码
- 窃听传输敏感信息
- 非法获取个人资料
HTTP篡改
- 插入广告
- 重定向网站
- 无法防御的XSS和CSRF攻击
HTTPS
中间人攻击
如何确定服务器身份
第六章 密码安全
密码的作用:证明你是你
密码-比对:存储的密码比对输入的密码
密码-泄露渠道:
- 数据库被偷
- 服务器被入侵
- 通讯被窃听
- 内部人员泄露数据
- 其他网站(撞库)
密码-存储
- 严禁密码的明文存储(防泄漏)
- 单向变换(防泄漏)
- 变换复杂度要求(防猜解)
- 密码复杂度要求(防猜解)
- 加盐(防猜解)
密码-哈希算法
- 原文-密文一一对应
- 雪崩效应(原文变动特别小,密文完全不同)
- 密文-原文,无法反推
- 密文固定长度
- 常见哈希算法:md5,sha1,sha256
密码-MD5单向变换
由于存在哈希算法对应的彩虹表,所以MD5单向变换并不安全。应该采用如下方式进行密码哈希变换。
md5(明文) = 密文
md5(md5(明文)) = 密文
md5(sha1(明文)) = 密文
md5(sha256(sha1(明文))) = 密文
单向变换彩虹表
密码(加盐和多次哈希)
对于每个用户生成的随机盐值也应该存储到DB中去,以便用户登录的时候使用
计算盐值和加密密码的方式
密码-帮助用户加强复杂度
密码-变换次数越多越安全
- 加密成本几乎不变(生成密码时速度慢一些)
- 彩虹表失效(数量太大,无法建立通用性)
- 解密成本增大N倍
密码-密码传输的安全性
- https传输
- 频率限制
- 前端加密意义有限
第七章 接入层注入问题
SQL注入
原理:原本预期是数据的用户输入混到了sql的逻辑里面,改变了sql原本的含义。
例1:
例2:
SQL注入危害
- 猜解密码
- 获取数据
- 删库删表
- 拖库
SQL注入防御
- 关闭错误输出
- 检查数据类型
- 对数据进行转义
- 使用参数化查询(最根本的方法)
- 使用ORM(对象关系映射)
NoSQL注入和防御
- 检查数据类型
- 类型转换
- 写完整的条件
第八章 接入层上传问题
存在漏洞的原因:
- 上传文件
- 再次访问上传的文件
- 上传的文件被当成程序解析
上传漏洞防御
- 限制上传的后缀(不可靠)
- 文件类型的检查(不可靠)
- 文件内容检查(通过文件的头几个字节去判断,也不能100%可靠)
- 程序输出(会存在性能损耗,程序先读一遍到内存中,然后传给用户)
- 权限控制-可写可执行互斥 (基本原则,应尽量满足)
第九章 社会工程学和信息泄露
信息泄露
- 泄露系统敏感信息
- 泄露用户敏感信息
- 泄露用户密码
信息泄露的途径
- 错误信息失控
- SQL注入
- 水平权限控制不当
- XSS/CSRF
- ……
社会工程学
- 你的身份由于掌握的资料确认
- 别人掌握了你的资料
- 别人伪装成你的身份
- 别人利用你的身份干坏事
OAUTH思想
- 一切行为由用户授权
- 授权行为不泄露敏感信息
- 授权会过期
利用OAUTH思想防止资料泄露
第十章 其他安全问题
- 拒绝服务DOS
- 重放攻击
拒绝服务攻击DOS
- 模拟正常用户
- 大量占用服务器资源
- 无法服务正常用户
常用攻击方式
- TCP半连接
- HTTP连接
- DNS
分布式拒绝服务攻击DDOS
- 流量可以达到几十到上百G
- 分布式(肉机,代理)
- 极难防御
DOS攻击防御
- 防火墙
- 交换机,路由器
- 流量清洗
- 高防IP(大量流量清洗服务,高带宽)
DOS攻击预防
- 避免重逻辑业务
- 快速失败快速返回
- 防雪崩机制
- 有损服务
- CDN
重放攻击
- 请求被窃听或记录
- 再次发相同的请求
- 产生意外的后果
重放攻击的后果
- 用户被多次消费
- 用户登录态被盗取
- ……
重放攻击的防御
- 加密(https)
- 时间戳
- token(session)
- nonce
- 签名