第十一周作业&总结

请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法

https://github.com/xuanliupc/geek

互联网系统面临的安全问题和应对方法

XSS攻击

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

SQL注入攻击

当系统使用sql拼接的方式来执行业务处理,攻击者在知道了表结构的情况下,可以通过sql特殊字符的方式来获取系统数据或对系统造成危害。
使用SQL预编译手段,绑定参数是最好的防SQL 注入方法。目前许多数据访问层框架,如myBatis,Hibernate 等,都实现SQL 预编译和参数绑定,攻击者的恶意SQL 会被当做SQL 的参数,而不是SQL 命令被执行。

CSRF攻击

用户登录受信服务器后,攻击者通过让用户访问攻击者服务器的方式,来向受信服务器发送攻击请求。
CSRF 是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才
可以。表单Token 就是阻止攻击者获得所有请求参数的可能,在页面表单中增加一个随机数Token,每次请求的Token 都不相同,请求提交后检查Token 的值是否正确以确定请求提交者是否合法。

高可用系统的度量

可用性指标
业界通常用多少个9来衡量网站的可用性,如QQ 的可用性是4个9,即QQ 服务99.99%可用,这意味着QQ 服务要保证其在所有运行时间中,只有0.01%的时间不可用,也就是一年中大约53分钟不可用。
网站年度可用性指标=(1-网站不可用时间/年度总时间)×100%网站不可用时间(故障时间)=故障修复时间点-故障发现(报告)时间点对可用性的定性描述,两个9是基本可用,年度停机时间小于88小时;3个9较高可用,年度停机时间小于9小时;4个9是具有自动恢复能力的高可用,年度停机时间小于53分钟;5个9是极高可用性,年度停机时间小于5分钟。

引发故障主要有以下几个原因:

  • 硬件故障
  • 软件bug
  • 系统发布
  • 并发压力
  • 网络攻击
  • 外部灾害

高可用系统架构

解耦

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

隔离

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

异步

  • 多线程编程
  • 反应式编程
  • 异步通信网络编程
  • 事件驱动异步架构

备份

  • 集群设计
  • 数据库复制

幂等

应用调用服务失败后,会将调用请求重新发送到其他服务器,但是这个失败可能是虚假的失败。比如服务已经处理成功,但是因为网络故障应用没有收到响应,这时应用重新提交请求就导致服务重复调用,如果这个服务是一个转账操作,就会产生严重后果。
服务重复调用有时候是无法避免的,必须保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性。有些服务天然具有幂等性,比如将用户性别设置为男性,不管设置多少次,结果都一样。但是对于交易等操作,问题就会比较复杂,需要通过交易编号等信息进行服务调用有效性校验,只有有效的操作才继续执行。

事务补偿

通过执行业务逻辑逆操作,使事务回滚到事务前状态

熔断

当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用。

限流

在高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。限流是指对进入系统的用户请求进行流量限制,如果访问量超过了系统的最大处理能力,就会丢弃一部分的用户请求,保证整个系统可用,保证大部分用户是可以访问系统的。这样虽然有一部分用户的请求被丢弃,产生了部分不可用,但还是好过整个系统崩溃,所有的用户都不可用要好。

限流的几种算法

  • 计数器算法(固定窗口,滑动窗口)
  • 令牌桶算法
  • 漏桶算法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容