第 11 周学习总结
安全架构
Xss跨站点脚本攻击,用户是登录状态的。
1,攻击者想用户通过推送js脚本,实现攻击。
2,攻击者直接攻击服务器,这个脚本信息直接存储在数据库中,用户通过访问网站触发数据库中的恶意脚本。
防御手段
防止恶意用户提交脚本。对脚本语言的字符进行消毒或者过滤。
SQL注入
尽量使用预编译的方式。
csrf攻击:跨站点请求伪造
用户登录到受信任的服务器,在这种状态下,用户又访问了攻击者的服务器,攻击者服务返回给用户的响应,这个响应是要在受信任的服务器中需要执行的,在用户不知情的情况下,在受信任的服务器上执行了攻击者放回给用户的响应请求。比如转账请求。比较典型的就是钓鱼网站。
表单token,以及用户的设备指纹,设备参数等等。每次token都不同。验证码也是。
Errorcode:错误回写。
html注释,比如php,jsp以及js注释,这部分信息会返回给前端页面。
文件上传。
路径遍历。暴露了不该访问的路径。
独立服务器,独立域名。返回给用户的是id,后台根据id号映射到具体的路径。
开源的防火墙
ModSecurity
网站的安全漏洞扫描
单项散列加密,加密是不可逆的。用于用户的密码。破解方式,通过映射表对照破解。增强方式,加盐。
对称加密。比如信用卡号。解密的秘钥和加密的秘钥一样。
非对称加密。解密与加密的秘钥不一样。加密是公钥,解密是私钥。数据签名就是相反的。
密钥安全管理与加解密服务系统
密钥服务器,密钥存储设备(分片存储,不同的人负责不同的分片。)
贝叶斯公式计算垃圾邮件的概率
通过布隆过滤器来存储黑名单邮箱地址
风控,规则引擎,机器学习。
引起故障的原因
硬件故障、软件bug、系统发布、并发压力、网络攻击以及外部灾害
隔离
业务与子系统隔离
微服务与中台架构
生产消费者隔离
虚拟机与容器隔离
其中一个故障,不影响其他应用。
异步
多线程编程
反应式编程
异步通信网络编程
时间驱动异步架构
备份
集群设计
数据库复制
Failover(失效转移)
数据库主主失效转移
负债均衡失效转移
设计无状态的服务
幂等:服务的重复调用与调用一次是一样的。比如转账。如果中途失败,确定保其只转一次钱。
事务补偿:通过执行业务逻辑你操作,使事务回滚到事务前状态。
熔断
断路器,关闭,打开,半开。
限流
拒绝部分请求。
策略
计数器算法,单位时间内记录请求次数。滑动窗口解决计数器清零临界期,导致流量激增的问题。
令牌桶算法,单位周期内保证令牌的数量。
漏铜算法,漏桶算法出口是均匀的。
自适应限流,系统根据自己情况决定处理多少流量
降级,对于一些非核心功能(流量比较大),通过降低服务的等级,来确保其他的重要服务能够正常执行。
异地多活
多地部署数据中心。挑战:异地存储导致数据不一致。
自动化测试,thoughtWorks开发的selenium
自动将期望值与真实值做对比。测试工程师干的。保证线上工程质量负责,保证线上系统的正确性。
单元测试,是RD需要干的。保证自己代码的正确性。
预发布验证
比如,第三方接口以及真实的数据。
预发布服务,不接入负载均衡。而是通过host绑定。只有开发工程师才能访问这台服务器。不是全量测试,而是关键点验证。
自动化发布
发布是人在控制,发布过程是自动化的。
灰度发布
针对大型的线上服务。
网站运行监控
用户行为日志采集
报警、自动控制(自动失效转移,自动扩容、自动限流)
通过代理进程收集相关信息,上报给数据中心,进行数据分析。
高可用的价值观
1,保持简单,是问题已于发现,快速解决。
2,目标明确,解决特定环境下的具体问题。
3,价值回归,成本收益要合理。
案例
1,Log日志的级别设置为debug导致日志内容太多,磁盘空间已经满了。建议现在日志的级别不低于warn
2,首页访问数据库导致这条sql频繁访问库,导致数据库负载比较高。解决方法,首页不应该反问数据库。
3,某个应用不是定时访问超时。其原因某个单例对象中多个方法使用synchroinized修饰符,由于this对象只有一个,就是执行不同方法,所有的并发请求也都要排队获取这唯一的一把锁。由于远程调用的方法也被加了synchronized,这个方法只能偶尔会被执行,但是每次执行都需要较长的时间才能完成,这段时间锁被调用,所有的用户线程都要等待,相应超时,这个方法执行完后释放锁,其他线程迅速执行,超时解除。
经验教训:
使用所操作需要谨慎,特别注意在有锁的方法中进行长时间的IO操作的时候。
针对使使用锁的不同场景,使用不同锁对象,而不是简单的在所有方法上都加上shnchronized。
4,缓存服务器的管理不善导致数据库负载高。
5,由于后台服务器没启动,而前台先启动,导致发布应用时,系统崩溃。
6,文件的需要根据不同的类型进行管理。这样不会出现大图片的上传,而占用的机器资源,导致小图片上传比较慢。
7,由于线上操作不规范,导致线上环境被破坏。比如做线上压测,而没有报备。
评论