一、传输安全
HTTP
传输窃听,在浏览器到代理服务器,再到链路,最后到服务器的这个过程中,代理服务器和链路容易发生传输链路窃听篡改。HTTP
窃听,包括窃听用户密码,窃听传输敏感信息,非法获取个人资料等等。HTTP
篡改,包括插入广告,重定向网站,无法防御的XSS
和CSRF
攻击。HTTPS
,在浏览器到代理服务器,再到链路,最后到服务器的这个过程中,代理服务器和链路采用了TLS(SSL)
加密。- 中间人攻击,浏览器到服务器之间,浏览器与中间人加密,服务器与中间人加密,中间人扮演了不同的角色,可以进行加密和解密,被攻击。
- 确定服务器身份,浏览器向
CA
内置信任列表,服务器向CA
申请证书,CA
验证域名并颁发证书给服务器,浏览器发起请求给服务器,服务器出具证书给浏览器,浏览器验证通过给服务器。其中,证书无法伪造,证书私钥不被泄露,域名管理权不泄露,CA
坚守原则。
二、密码安全
- 密码安全,分密码的作用、密码的存储、密码的传输、密码的替代方案和生物特征密码的问题。
- 密码的作用是为了证明是你自己。对于密码的对比,存储的密码与输入的密码之间进行比对。
- 密码的泄露渠道,分为数据库被偷、服务器被入侵、通讯被窃听、内部人员泄露数据和其它网站撞库等等。
- 密码的存储,分为严禁明文存储防泄露、单向变换防泄露、变换复杂度要求防猜解、密码复杂度要求防猜解、加盐防猜解等等。
- 对于密码的哈希算法,明文与密文一一对应,雪崩效应,密文与明文无法反推,密文固定长度,常见的哈希算法有
md5
、sha1
和sha256
等等。其中,对于md5
密码,分为md5
单向变换和单向变换彩虹表。通过加盐,能够帮助用户加强复杂度。 - 密码的变换次数越多越安全,加密成本几乎不变但是生成密码时速度慢一些,彩虹表失效但是数量太大导致无法建立通用性,解密成本增大
N
倍。 - 对于密码传输的安全性,可以从
https
传输、频率限制和前端加密意义有限等考虑。 - 对于生物特征密码,分为指纹、声纹、虹膜和人脸等等。但是,生物特征密码也有缺点,私密性容易泄露、安全性碰撞、唯一性,终身唯一而无法修改。
三、接入层注入问题
- 关系型数据库,存放结构化数据,可高效操作大量数据,方便处理数据之间的关联关系,常见的关系型数据库有
access
、mysql
、sql server
等等。 SQL
语言,比如select * from table where id = 1
,它是标准化,类型自然语言的描述性语言,用于关系型数据库,可完成增、删、改、查以及各种复杂的数据库操作。- 对于
SQL
,会存在SQL
注入的问题。SQL
注入的危害是猜解密码、获取数据、删库删表、拖库等等。 - 对于
SQL
注入防御,可以关闭错误输出、检查数据类型、对数据进行转义、使用参数化查询、使用ORM
对象关系映射。 - 对于
NoSQL
的注入和防御,需要检查数据类型、类型转换和写完整条件。 - 对于
PHP
防御SQL
注入,需要检查数据类型、对数据进行转义、使用参数化查询、使用ORM
对象关系映射等等。
四、接入层上传问题
- 上传问题,上传文件,再次访问上传的文件,上传的文件被当成程序解析。
- 对于上传问题的防御,可以从限制上传后缀、文件类型检查、文件内容检查、程序输出、权限控制的可写可执行互斥等等。
五、社会工程学和信息泄露
- 信息泄露,分为泄露系统敏感信息、泄露用户敏感信息和泄露用户密码等等。
- 信息泄露的途径,分为错误信息失控、
SQL
注入、水平权限控制不当、XSS/CSRF
等等。 - 信息泄露会导致社会工程学问题,你的身份由你掌握的资料确定,别人掌握了你的资料,别人伪装成你的身份,利用你的身份干坏事等等。
- 社会工程学案例,比如电信诈骗,伪装公检法,
QQ
视频借钱,微信伪装好友等等。 QAuth
思想,一切行为由用户授权,授权行为不泄露敏感信息,授权会过期。- 利用
QAuth
思想防止资料泄露,用户登录获取敏感资料,敏感资料派发票据给用户,用户发带票据请求给业务,业务将带票据请求给敏感资料,敏感资料返回票据对应的数据给业务,业务返回数据给用户。其中,用户授权读取资料,无授权的资料不可读取,不允许批量获取数据,数据接口可风控审计。
六、其它安全问题
- 拒绝服务攻击
DOS
,模拟正常用户,大量占用服务器资源,无法服务正常用户,TCP
半连接,HTTP
连接、DNS
。 - 大规模分布式拒绝服务攻击
DOS
,流量可达几十到上百G
,分布式肉鸡代理,极难防御。 DOS
攻击防御,可以通过防火墙,交换机以及路由器,流量清洗,高防IP
。DOS
攻击预防,可以通过避免重逻辑业务,快速失败快速返回,防雪崩机制,有损服务,CDN
等等。- 重放攻击,比如用户被多次消费,用户登录态被盗取,多次抽奖等等。
- 重放攻击防御,可以通过加密
HTTPS
,时间戳,token
以及session
,nonce
和签名等等。