第十一周总结

用户头像
alpha
关注
发布于: 2020 年 12 月 06 日

一、安全架构

XSS攻击(跨站脚本)

攻击方法:

1、通过url参数注入脚本。通过alert探测网站是否防御,然后通过src的方式注入js代码。

2、将攻击脚本保存到数据库。比如评论功能,攻击者评论时提交包含攻击代码的内容。查看该评论的用户都将收到攻击。

防御手段:

消毒:XSS 攻击者一般都是通过在请求中嵌入恶意脚本达到攻击目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些 HTML 危险字符转义,如“>”转义为“>”、“<”转义为“<”等,就可以防止大部分攻击。为了避免对不必要的内容错误转义,如“3<5”中的“<”,需要进行文本匹配后再转义,如“<imgsrc=”这样的上下文中“<”才转义。事实上,消毒几乎是所有网站最必备的 XSS 防攻击手段。

SQL注入攻击

攻击方法:发送含有恶意SQL命令的Http请求。

比如:http://www.a.com?username=xx';drop tables users --

防御手段:

消毒:和防 XSS 攻击一样,请求参数消毒是一种比较简单粗暴又有效的手段。通过正则匹配,过滤请求数据中可能注入的 SQL 文。

SQL 预编译参数绑定:使用预编译手段,绑定参数是最好的防 SQL 注入方法。

CSRF攻击(跨站请求)

攻击步骤:

1)用户访问正常登录网站A,在用户浏览器产生cookie

2)用户访问了攻击者服务器,服务器给用户的响应中包含了对A服务器的请求

3)在用户浏览器使用登录网站A产生的cookie,用攻击服务器返回的请求,非法访问网站A

防御手段:

1、表单 Token: 就是阻止攻击者获得所有请求参数的可能,在页面表单中增加一个随机数 Token,每次请求的 Token 都不相同,请求提交后检查 Token 的值是否正确以确定请求提交者是否合法。

2、验证码:相对说来,验证码则更加简单有效,即请求提交时,需要用户输入验证码,以避免在用户不知情的情况下被攻击者伪造请求。

其他攻击:

1、错误回显,攻击者利用错误提示内容找漏洞,可以通过配置统一错误页面的方式解决。

2、Html注释,程序发布时进行安全扫描。

3、文件上传,设置白名单,只允许上传安全文件。

4、路径遍历,攻击者在请求的 URL 中使用相对路径,遍历系统未开放的目录和文件。防御方法主要是将 JavaScript、CSS 等资源文件独立服务器、独立域名,其他文件不使用静态 URL 访问,动态参数不包含文件路径信息。



主动防御措施:

1、开源 Web 应用防火墙 ModSecurity,探测攻击并保护应用程序。可以嵌入web应用服务器,也可以作为独立应用。

2、对敏感数据加密保存。信息加密技术可分为三类:单项散列加密,对称加密,非对称加密。(单项散列是不可逆的加密,比如MD5,但是可以通过算法将常用密码保存进行破解,安全起见在使用MD5算法时可以拼接用户id等其他信息。对称加密,加密和算法使用相同的秘钥。非对称加密,加密和解密的秘钥不相同)

3、提前进行安全漏洞扫描。

4、机器自动风控的技术手段主要有规则引擎和机器学习。规则引擎是当交易的某些指标满足一定条件的时候,就会被认为具有高风险的欺诈可能性。大型互联网应用更倾向于使用机器学习模型进行风控。

5、布隆过滤器,过滤黑名单。

6、秘钥安全管理与加密服务。密码的生成和查询通过秘钥服务器完成,为了保障密码的安全,将密码分段存储到不同的数据库。



高可用

可用性指标:99.99%,一年中大约53分钟不可用。

故障分类:

事故级故障 严重故障,网站整体不可用

A类故障 网站访问不顺畅,或核心功能不可用

B类故障 非核心功能不可用,或核心功能少数用户不可用

C类故障 以上故障以外的其他故障

故障考核:开发应对自己的代码负责。



高可用架构:

解耦。高内聚、低耦合的组件设计原则。面向对象设计原则、设计模式。领域驱动建模。

隔离。

业务与主系统隔离。微服务与中台架构。生产者消费者隔离。虚拟机与容器隔离。

异步。多线程编程。事件驱动异步架构。(反应式编程,异步通信网络编程)。

备份。集群设计,数据库复制。

失效转移。负载均衡失效转移,数据库实现转移。(一般通过配置服务器进行心跳管理,确认是否失效,进行故障转移)

幂等。

事务补偿。传统事务的ACID,分布式事务的BASE。通过执行业务逻辑逆操作,使事务回滚到事务前状态。

重试。调用者可以通过重试的方式修复单次调用的故障。

熔断。

限流。计数器算法。令牌桶算法。漏桶算法。自适用限流(根据服务器负载动态限流)。

降级。高并发时,将非核心功能下线。

异地多活。

高可用系统运维:

发布。先关闭负载均衡服务器中的部分服务器路由,然后再关闭着部分服务器应用,更新这些服务器。启动服务器,打开路由,循环操作直到所有服务更新完成。

自动化测试。Selenium工具。

自动化部署。

预发布验证。

代码版本控制。分支开发。主干发布。

灰度发布。先发布部分服务器,等运行稳定后再发布其他服务器。

网站运行监控。

服务器性能监控。

监控数据采集。

监控管理。报警、自动失效转移、自动扩容、自动限流。

用户行为日志收集。

服务端收集。缺点是可能会出现信息失真,如 IP 地址是代理服务器地址而不是用户真实 IP;多个链接指向同一个页面的情况下无法分辨访问路径等。

客户端浏览器日志收集,浏览器可以收集用户真实的操作行为,因此比服务器日志收集更加精准。其缺点是比较麻烦,需要在页面嵌入特定的 JS 脚本来完成。

业务运行数据报告。比如缓冲命中率、平均响应延迟时间、每分钟发送邮件数目、待处理的任务总数等。



用户头像

alpha

关注

还未添加个人签名 2019.01.09 加入

还未添加个人简介

评论

发布
暂无评论
第十一周总结