文档章节

1.序章

o
 osc_kb5fqz4x
发布于 07/01 16:55
字数 2390
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.1. Web技术演化

1.1.1. 静态页面

Web技术在最初阶段,网站的主要内容是静态的,大多站点托管在ISP上,由文字和图片组成,制作和表现形式也是以表格为主。当时的用户行为也非常简单,基本只是浏览网页。

1.1.2. 多媒体阶段

随着技术的不断发展,音频、视频、Flash等多媒体技术诞生了。多媒体的加入使得网页变得更加生动形象,网页上的交互也给用户带来了更好的体验。

1.1.3. CGI阶段

渐渐的,多媒体已经不能满足人们的请求,于是CGI(Common Gateway Interface)应运而生。CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,让外部程序根据Web请求内容生成动态的内容。

在这个时候,各种编程语言如PHP/ASP/JSP也逐渐加入市场,基于这些语言可以实现更加模块化的、功能更强大的应用程序。

1.1.4. Ajax

在开始的时候,用户提交整个表单后才能获取结果,用户体验极差。于是Ajax(Asynchronous Javascript And XML)技术逐渐流行起来,它使得应用在不更新整个页面的前提下也可以获得或更新数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。

1.1.5. MVC

随着Web应用开发越来越标准化,出现了MVC等思想。MVC是Model/View/Control的缩写,Model用于封装数据和数据处理方法,视图View是数据的HTML展现,控制器Controller负责响应请求,协调Model和View。

Model,View和Controller的分开,是一种典型的关注点分离的思想,使得代码复用性和组织性更好,Web应用的配置性和灵活性也越来越好。而数据访问也逐渐通过面向对象的方式来替代直接的SQL访问,出现了ORM(Object Relation Mapping)的概念。

除了MVC,类似的设计思想还有MVP,MVVM等。

1.1.6. RESTful

在CGI时期,前后端通常是没有做严格区分的,随着解耦和的需求不断增加,前后端的概念开始变得清晰。前端主要指网站前台部分,运行在PC端、移动端等浏览器上展现给用户浏览的网页,由HTML5、CSS3、JavaScript组成。后端主要指网站的逻辑部分,涉及数据的增删改查等。

此时,REST(Representation State Transformation)逐渐成为一种流行的Web架构风格。

REST鼓励基于URL来组织系统功能,充分利用HTTP本身的语义,而不是仅仅将HTTP作为一种远程数据传输协议。一般RESTful有以下的特征:

域名和主域名分开
        api.example.com
        example.com/api/

带有版本控制
        api.example.com/v1
        api.example.com/v2

使用URL定位资源
        GET /users 获取所有用户
        GET /team/:team/users 获取某团队所有用户
        POST /users 创建用户
        PATCH/PUT /users 修改某个用户数据
        DELETE /users 删除某个用户数据

用 HTTP 动词描述操作
        GET 获取资源,单个或多个
        POST 创建资源
        PUT/PATCH 更新资源,客户端提供完整的资源数据
        DELETE 删除资源

正确使用状态码
        使用状态码提高返回数据的可读性

默认使用 JSON 作为数据响应格式
有清晰的文档

1.1.7. 分布式

随着数据量的不断提高,单台设备难以承载这样的访问量,于是出现了提高业务复用及整合的分布式服务框架(RPC)。

1.1.8. 云服务

云计算诞生之前,大部分计算资源是处于“裸金属”状态的物理机,运维人员选择对应规格的硬件,建设机房的 IDC 网络,完成服务的提供,投入硬件基础建设和维护的成本很高。云服务出现之后,使用者可以直接购买云主机,基础设施由供应商管理,这种方式也被称作 IaaS(Infrastructure-as-a-Service)。

在这个阶段,Web的架构也越发复杂,传统的功能被拆分成不同的模块。代理服务、负载均衡、数据库分表、异地容灾、缓存、CDN、消息队列、安全防护等技术应用越来越广泛,增加了Web开发和运维的复杂度。

随着架构的继续发展,应用的运行更加细粒度,部署环境容器化,各个功能拆成微服务或是Serverless的架构。

1.1.8.1. Serverless

Serverless 架构由两部分组成,即 Faas(Function-as-a-Service) 和 BaaS(Backend-as-a-Service)。

FaaS是运行平台,用户上传需要执行的逻辑函数如一些定时任务、数据处理任务等到云函数平台,配置执行条件触发器、路由等等,就可以通过云平台完成函数的执行。

BaaS包含了后端服务组件,它基于 API 完成第三方服务,主要是数据库、对象存储、消息队列、日志服务等等。

1.1.8.2. 微服务

微服务起源于2005年Peter Rodgers博士在云端运算博览会提出的微Web服务(Micro-Web-Service),根本思想类似于Unix的管道设计理念。2014年,由Martin Fowler与 James Lewis共同提出了微服务的概念,定义了微服务架构风格是一种通过一套小型服务来开发单个应用的方法,每个服务运行在自己的进程中,并通过轻量级的机制进行通讯(HTTP API)。

微服务是一种应用于组件设计和部署架构的软件架构风格。它利用模块化的方式组合出复杂的大型应用程序:

各个服务功能内聚,实现与接口分离。
各个服务高度自治、相互解耦,可以独立进行部署、版本控制和容量伸缩。
各个服务之间通过 API 的方式进行通信。
各个服务拥有独立的状态,并且只能通过服务本身来对其进行访问。

1.1.8.3. CI/CD

持续集成(CI,Continuous Integration)是让开发人员将工作集成到共享分支中的过程。频繁的集成有助于解决隔离,减少每次提交的大小,以降低合并冲突的可能性。

持续交付(CD,Continuous Deployment)是持续集成的扩展,它将构建从集成测试套件部署到预生产环境。这使得它可以直接在类生产环境中评估每个构建,因此开发人员可以在无需增加任何工作量的情况下,验证bug修复或者测试新特性。

1.1.8.4. API网关

API网关是一个服务器,客户端只需要使用简单的访问方式,统一访问API网关,由API网关来代理对后端服务的访问,同时由于服务治理特性统一放到API网关上面,服务治理特性的变更可以做到对客户端透明,一定程度上实现了服务治理等基础特性和业务服务的解耦,服务治理特性的升级也比较容易实现。

1.1.9. 参考链接

Scaling webapps for newbs
GitHub 的 Restful HTTP API 设计分解

1.2. Web攻防技术演化

1939年,图灵破解了Enigma,使战争提前结束了两年,这是较早的一次计算机安全开始出现在人们的视野中,这个时候计算机的算力有限,人们使用的攻防方式也相对初级。

而后随着因特网不断发展,网络安全也开始进入人们的视野。在这个时候,很多网站都是零防护的,也没有很多人有安全意识。很多系统的设计也只考虑了可用性,对安全性的考虑不多,所以在当时结合搜索引擎与一些集成渗透测试工具,可以很容易的拿到数据或者权限。

而后随着时代的发展,攻防技术有了很大的改变,防御手段逐渐进化。在攻击发生前有威胁情报、黑名单共享等机制,威胁及时能传播。在攻击发生时有基于各种机制的防火墙如关键字检测、语义分析、深度学习,有的防御机制甚至能防零日攻击。在攻击发生后,一些关键系统系统做了隔离,攻击成果难以扩大,就算拿到了目标也很难做进一步的攻击。也有的目标蜜罐仿真程度很高,有正常的服务和一些难以判断真假的业务数据。

1.3. 网络安全观

1.3.1. 三个最基本要素

机密性(Confidentiality)
完整性(Integrity)
可用性(Availability)

1.3.2. 术语

缺点 (defect / mistake)
        软件在实现上和设计上的弱点
        缺点是缺陷和瑕疵的统称

缺陷(bug)
        实现层面的软件缺点
        容易被发现和修复
        例如:缓冲区溢出

瑕疵(flaw)
        一种设计上的缺点,难以察觉
        瑕疵往往需要人工分析才能发现
        软件系统中错误处理或恢复模块,导致程序不安全或失效

漏洞(vulnerability)
        可以用于违反安全策略的缺陷或瑕疵
o
粉丝 0
博文 61
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
《java数据结构和算法》读书笔记

《Java多线程编程核心技术》读书笔记 常用数据结构 第2章 数组 最简单的数据结构,在查找上比链表有优势,但是在插入与删除上比不上链表。 Java中的数组有长度限制,为int值。在内存模型中,...

刀狂剑痴
2016/05/27
284
0
get数据技能

《哈佛商业评论》把数据科学家誉为“21 世纪最性感的职业”。虽说如此称呼有些夸张,但这个名称对数据科学的推崇却一点也没错,也预示了数据科学行业的蓬勃发展和无限前途。 今天小编就盘点了...

图灵教育
2016/08/17
0
0
数据结构与算法

第二章 线性结构 常见的类型 线性表 栈 队列 最简单的线性表,常用的栈和队列 线性表 顺序存储结构(顺序表) 使用数组实现 链式存储结构(链表) 物理存储空间不必连续 单向 a1,a2,a3他们存...

抚长剑兮玉珥
2018/07/23
0
0
emeditor 正则表达式找出1-3个任意字符的行

查找替换: ^.{1,3}$ 以下前七行符合条件 天 . 1 12 147 下行 上行一 FRRRRR 今天收获 **以上前七行符合条件 宏语句【关键点:整理交通格式、一键排版】: menu= CreatePopupMenu();//鸿蒙2...

osc_ujeqpb4c
2019/08/15
6
0
读书:大话数据结构

第1 章数据结构绪论 数据结构; 是相互之间存在一种或多种特定关系的数据元素的集合。 数据: 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集...

努力一点点坚持一点点
2018/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

功率放大芯片IR2184介绍

IR2184引脚定义: IN一般为脉冲信号,即全桥电路中的pwm波信号,一般可以通过调节它的占空比来控制智能车电机的转速。 SD信号为使能信号,高电平有效,芯片工作。 Vb是高侧浮动电源输入脚,H...

osc_baeiwmv4
21分钟前
15
0
认知成长:聊聊专业性和职业性

最近在忙双十一全链路压测的事情,由于岗位职责和团队定位等原因,和很多部门以及不同角色的同事都有接触。上周和某个团队的Leader开完会,简短的聊了下工作的推动和协同的一些事项。关键词就...

老_张
2019/10/21
7
0
百万年薪程序员的7点能力

点击蓝字关注,回复“职场进阶”获取职场进阶精品资料一份 几周前,微盟爆了个大雷,数据库让内部员工删库跑路。写了篇文章,做了一些我的判断:从微盟36小时故障,谈谈数据安全这点事。 很明...

潘永斌
04/01
13
0
收住你的下巴!第一人称视角宛如外星科技的自动化伐木!

声明:图片、视频均来自网络,若有侵权请联系处理 喜欢就点赞,随手转发 END 获取更多机械电子资讯 扫码关注 微信公众号:机电狂人 搜索关注 微博:机电狂人531 本文分享自微信公众号 - 工科...

工科生日常
2018/06/10
12
0
matlab教程:Matlab入门教程

  1、适当了解一些数值计算、数值分析以及最优化的理论   用Matlab的无非是做数值计算或者最优化,这也是Matlab的强项,Matlab有足够多的工具箱解决这些问题。但是在使用这些工具箱之前,...

SXXpenguin
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部