超文本传输协议是互联网上应用最广泛的一种网络协议。所有www文件都必须遵守的一个标准,是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范,简单点说就是一种固定的通讯规则。
网络应用程序架构包括三种:
客户机/服务器结构(C/S)
浏览器/服务器结构(B/S)
P2P结构
C/S架构
B/S架构
P2P架构
点到点系统,不需要服务器中转,客户端与客户端彼此直接通信
Protocol:指定使用的传输协议
hostname:主机名
port:端口号
path:路径
parameters:参数
query:可选,用于给动态网页传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
fragment:信息片段,字符串,用于指定网络资源中的片断。
HTTP请求报文分为三部分
响应
GET POST OPTIONS HEAD PUT DELETE TRACE CONNECT
缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。这样带来的好处有:缓解服务器端压力,提升性能(获取资源的耗时更短了)。
Web服务器通过2种方式来判断浏览器缓存是否是最新的
1、 Last-Modified和If-Modified-Since
2、 ETags和If-None-Match
在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载;大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。
1XX 指示信息
2XX 请求发送成功
3XX 重定向
4XX 客户端发送的请求有语法错误
5XX 服务器错误
HTTPS协议是以安全为目标的HTTP通道,其实就是HTTP的升级版本
数字证书:是由权威的CA(Certificate Authority)机构给服务端进行颁发,CA机构通过服务端提供的相关信息生成证书,证书内容包含了持有人的相关信息,服务器的公钥,签署者签名信息(数字签名)等,最重要的是公钥在数字证书中。
集群环境:服务器集群是指将很多服务器集中起来去进行同一种服务。集群可以利用多个计算机并行计算从而获得很高的计算速度(负载均衡),也可以用多个计算机做备份,从而使得实现故障转移。
Cookie: Cookie实际上是一小段的文本信息(key-value格式)。
客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
Expires属性:Cookie中的maxAge用来表示该属性,单位为秒。
在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
url编码是一种浏览器用来打包表单输入的格式。
Base64就是一种用64个ASCII字符来表示任意二进制数据的方法。
MD5 为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。目前不可逆解。
针对同一个系统功能的测试,三端所测的业务流程是一样的
一般情况下手机端和PC端都对应一套后台服务,也有一些功能,比如PC与手机端展示不一致,或者有什么特殊处理,这样情况下后台会写两套不同的接口来处理对应的业务需求
主要有原生APP(Native App)、混合APP(Hybrid App)、WEB APP三种.
传递测试法:看数据
测一送一: 同时执行两种同样的操作。
遍历测试法: 测试弹窗,测试所有弹窗。
破坏测试法:比如网络或者内存。(前四种主要是全局的)
顺序(瀑布模型):简单,分阶段,阶段间存在因果关系,不支持用户参与,要求预先确定需求。
使用范围:需求易于完善定义且不易变更的软件系统。
敏捷(迭代):不要求需求预先完备定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化。
使用范围:需求复杂、难以确定、动态变化的软件系统
3个角色:产品负责人 ScrumMaster 开发团队
3个工件
产品Backlog
SprintBacklog
产品增量
5个事件
Sprint(Sprint本身是一个事件,包括了如下4个事件)
Sprint计划会议
每日站会
Sprint评审会议
Sprint回顾会议
5个价值
承诺 – 愿意对目标做出承诺
专注– 把你的心思和能力都用到你承诺的工作上去
开放– Scrum 把项目中的一切开放给每个人看
尊重– 每个人都有他独特的背景和经验
勇气– 有勇气做出承诺,履行承诺,接受别人的尊重
1.Must 2.Should 3.Could 4.Would Not
:文化改变+自动化工具=不断变化的市场。也是开发模式:敏捷+自动化工具
通过实际的攻击进行安全测试与评估的方法就是渗透测试
概念:两个页面地址中的协议,域名(或IP),子域名,端口号一致,则表示同源
意义:限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性
沙箱(Sandbox):泛指“资源隔离类模块”的代名词
设计沙箱的目的:
让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源
如果一定要跨越沙箱边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性
浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面
攻击者可以在之间输入JavaScript代码,实现一些“特殊效果”
在真实的攻击中,攻击者不仅仅弹出一个框,通常使用
而在x.txt中就存放着攻击者的恶意JavaScript代码,这段代码可能是
用来盗取用户的Cookie,也可能是监控键盘记录等恶意行为
反射型:将恶意代码附着在参数中实例,
储存型:当用户提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器
DOM:通过JavaScript修改页面的DOM节点形成的XSS
SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令
开发人员为了增加代码的灵活性,通常会将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。PHP、JSP、ASP等语言中都可能会有文件包含漏洞,但PHP中居多。
攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
Session是有生命周期的,攻击者持有一个有效的Session,若Session一直未能失效,则攻击就通过此有效的Session一直使用用户的账户,成为一个永久的“后门”。
简称SSO。在多个应用系统中,只需要登录一次,就可以访问其他所有的应用系统。
基于角色的访问控制:访问控制实际上是建立用户与权限之间的对应关系
由于水平权限管理是系统缺乏一个数据级的访问控制所造成的
OAuth引入了一个授权环节来解决上述问题。第三方应用请求访问受保护资源时,资源服务器在获准资源用户授权后,会向第三方应用颁发一个访问令牌(AccessToken)。该访问令牌包含资源用户的授权访问范围、授权有效期等关键属性。第三方应用在后续资源访问过程中需要一直持有该令牌,直到用户主动结束该次授权或者令牌自动过期。
简称SSO。在多个应用系统中,只需要登录一次,就可以访问其他所有的应用系统。
基于角色的访问控制:访问控制实际上是建立用户与权限之间的对应关系
由于水平权限管理是系统缺乏一个数据级的访问控制所造成的
OAuth引入了一个授权环节来解决上述问题。第三方应用请求访问受保护资源时,资源服务器在获准资源用户授权后,会向第三方应用颁发一个访问令牌(AccessToken)。该访问令牌包含资源用户的授权访问范围、授权有效期等关键属性。第三方应用在后续资源访问过程中需要一直持有该令牌,直到用户主动结束该次授权或者令牌自动过期。