第十一周总结
安全架构
XSS 攻击防御手段:XSS 攻击者一般都是通过在请求中嵌入恶意脚本达到攻击目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些 HTML 危险字符转义,如“>”转义为“>”、“<”转义为“<”等,就可以防止大部分攻击。
注入攻击防御手段:和防 XSS 攻击一样,请求参数消毒是一种比较简单粗暴又有效的手段。通过正则匹配,过滤请求数据中可能注入的 SQL 文。
使用预编译手段,绑定参数是最好的防 SQL 注入方法。
CSRF 攻击防御手段:CSRF 是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。表单 Token 就是阻止攻击者获得所有请求参数的可能,在页面表单中增加一个随机数 Token,每次请求的 Token 都不相同,请求提交后检查 Token 的值是否正确以确定请求提交者是否合法。
对称加密
对称加密就是最传统的加密计算:加密和解密使用同一个密钥。加密解密过程:明文->密钥加密->密文 密文->密钥解密->明文
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高,通常在消息发送方需要加密大量数据时使用。由于加解密使用的是同一个密钥,因此如何把密钥安全地传递到解密者手上就成了必须要解决的问题。
非对称加密
对称加密算法又称现代加密算法。非对称加密算法需要一对密钥:公开密钥和私有密。如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。算法强度复杂,安全性依赖于算法与密钥,但是加密解密速度慢。常用的场景有:登陆认证、数字签名、数字证书等等。
自动化测试
自动化测试主要指四个方向:
单元测试:可以理解为对一个函数、一个组件的测试
接口测试即 API 测试,主要关注提供的接口是否可靠
功能测试可以理解为应用的 UI、功能是否符合预期
基准测试可以帮我们测试代码的性能。
自动化测试主要指四个方向:
单元测试:可以理解为对一个函数、一个组件的测试
接口测试即 API 测试,主要关注提供的接口是否可靠
功能测试可以理解为应用的 UI、功能是否符合预期
基准测试可以帮我们测试代码的性能。
自动化部署
自动化部署就是部署过程中所有的操作全部自动化,无需人工干预,常见的工具有 Gitlab、Jenkins、TeamCity 等等
持续部署三步走:
持续集成:允许工程师随时向公共分支提交代码,并立即进行自动化测试。
持续交付:除了跑单元测试及软件打包,持续交付机制会将软件部署到各种测试环境中
持续部署:代码在没有人工干预的情况下被测试、构建、部署并推送到生产环境
灰度发布
大型网站会使用灰度发布模式,将集群服务器分成若干部分,每天只发布一部分服务器,观察运行稳定没有故障,第二天继续发布一部分服务器,持续几天的时间才把整个集群全部发布完毕,期间如果发现问题,就只需要回滚已发布的一部分服务器即可。
网站运行监控
网站运行监控对于网站运维和架构设计优化至关重要
用户行为日志收集
具体用户行为日志收集手段有两种:
服务器端日志收集,这个方案比较简单,Apache 等几乎所有 Web 服务器都具备日志记录功能,可以记录大部分用户行为日志,开启 Web 服务器的日志记录功能即可。其缺点是可能会出现信息失真,如 IP 地址是代理服务器地址而不是用户真实 IP;多个链接指向同一个页面的情况下无法分辨访问路径等。
客户端浏览器日志收集,浏览器可以收集用户真实的操作行为,因此比服务器日志收集更加精准。其缺点是比较麻烦,需要在页面嵌入特定的 JS 脚本来完成。
监控管理
监控数据采集后,除了用作系统性能评估、集群规模伸缩性预测等,还可以根据实时监控数据进行风险预警,并对服务器进行失效转移,自动负载调整,最大化利用集群所有机器的资源。
评论