写点什么

架构师训练营第 1 期第 11 周学习总结

用户头像
好吃不贵
关注
发布于: 2020 年 12 月 05 日
架构师训练营第 1 期第 11 周学习总结

本周主要学习了安全架构和高可用两部分。

安全架构先讨论了攻击方式。有 XSS(Cross Site Script 跨站点脚本伪造)攻击,攻击者通过登录的用户发送给服务器包含了恶意的 JS 脚本,防御方式是防止请求中嵌入恶意脚本,进行消毒,比如>转移为 &gt。有 SQL 注入攻击,比如用户提交字符串包含了恶意 SQL 命令的 http 请求,比如“;drop tables users --”,防御方式是消毒,过滤请求数据中可能注入的 SQL 文。使用 SQL 预编译 prepare statement 提早生成 SQL 语法树。有 CSRF(Cross Site Request Forgery)攻击,跨站点请求伪造,攻击者在用户不知情的情况下,通过用户访问受信任服务器。防御方式是表单加 token,加密构造签名,这样服务器检查,是不是来自自己的 http 的。或者用验证码的方式,但是用户体验不大好,尽可能只用在支付等重要的环节中。Reference check 背景调查目前用的不多。其他伪造方式有 Error code,通过错误回显,用于 debug,攻击者会利用这些信息,猜测漏洞在哪里。其他防御方式还有 Web 应用防火墙,网站漏洞安全扫描等。

安全架构也讨论了加密和解密,主要有三种方式。第一种是单向散列加密,密文没法恢复为明文,但攻击者可以通过散列的方式,把上百万个明文数据都生成密文,再根据密文的散列反推出明文。第二种是对称加密,比如信用卡号,用户生日等,不希望泄露,但又要使用的,密文可以通过用一个密钥恢复出明文。第三种是非对称加密,一般用于加密的是公约,用于解密的是私钥。数字签名用私钥加密,公钥解密。保护密钥的方式通常由应用服务器、密钥服务器、密钥存储设备三部分组成。同时用户有密钥申请者,密钥管理者和安全审核人员构成。

安全架构也讨论了反垃圾与风控。反垃圾邮件通常使用机器学习的方式,贝叶斯公式,使用后验概率,A 发生时,B 发生的概率是多少。先用模型训练,再对样本分类。还可以使用布隆过滤器,发送垃圾邮件的邮箱加到布隆过滤器中,在黑名单的,一定会判断到,不会出现漏判,但可能出现误判。风控系统一般使用规则引擎,识别出交易信息。比如欺诈高发区,金额超过一定数量,两次交易地址源,收货地不符等。高风险可以采用人工审核,可以采用机器学习的方式,用特征和模型,识别其他的高风险交易。

高可用的可用性度量主要采用几个 9 的方式,比如 4 个 9,对应 99.99%,也就是 53 小时。一般大公司采用故障分机制,分为 A,B,C 三类,一开始的时候,每个人分配一定故障分,后面用于扣除,故障分太低会影响 KPI。提高开发时大家对可用性的意识。

提升高可用的架构方案主要有几类。比如解耦,降低代码的耦合度,基于面向对象的基本设计原则,面向对象的设计模式,领域驱动设计建模等。比如隔离,把业务和子系统隔离。比如异步,使用多线程编程,反应式编程,异步通信网络编程,事件驱动异步架构等。备份使用集群设计,数据库复制满足 CAP 原理。幂等会保障多次调用结果是一致的。事务补偿通过执行业务的逻辑逆操作,使事务回滚到事务前的状态,从而防止状态错误。比如重试,服务器重试需要考虑到下级的时间总和要比上级的时间短。比如熔断,防止服务器级联失效。断路器有几种状态,关闭,打开,半开。比如限流,只让一部分请求进来。一般采用令牌桶算法和漏桶算法。

高可用的架构运维方案有发布,自动化测试,自动化部署,代码版本控制,自动化发布,灰度发布,网站运行监控等。其中自动化测试是面向线上服务的,而不是面向开发的。灰度发布指的是一次只把新功能发布到一部分服务器上,判断核心指标是否上升了,如果下降了,表示不好,那么回滚代码。网站运行监控主要分为用户以及服务器监控。

总而言之,价值观是要分析自己的问题,用成本最少的方式解决,考虑是否划得来,而不是采用某些技术概念。

用户头像

好吃不贵

关注

还未添加个人签名 2018.11.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 1 期第 11 周学习总结